home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Tcl-Tk 8.0 / Pre-installed version / Tcl Shell 8.0 / Tcl Shell 8.0.rsrc < prev    next >
MacOS Resource Fork  |  1997-08-15  |  31.8 KB  |  [APPL/TclL]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacOS Resource Fork (archive/rsrc).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert MacOS Resource Fork (archive/rsrc) magic Supported
100% dexvert MacOS Executable (executable/macOSExecutable) idMeta Supported
10% dexvert Jesper Olsen Module (music/jesperOlsen) magic Supported
1% dexvert BeOS Resource Data (archive/beOSResourceData) ext Unsupported
1% dexvert AppleSingle (archive/appleSingle) fallback Supported
100% file AppleDouble encoded Macintosh file default
99% file data default
56% TrID Mac AppleDouble encoded default
28% TrID TTComp archive compressed (bin-2K) default (weak)
14% TrID MacBinary 1 default (weak)
100% siegfried fmt/503 AppleDouble Resource Fork (2) default
100% lsar AppleSingle default
100% gt2 MAC Bilddatei default (weak)


id metadata
keyvalue
macFileType[APPL]
macFileCreator[TclL]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 05 16 07 00 02 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000010| 00 00 00 00 00 00 00 00 | 00 02 00 00 00 09 00 00 |........|........|
|00000020| 00 32 00 00 00 20 00 00 | 00 02 00 00 00 52 00 00 |.2... ..|.....R..|
|00000030| 7e ed 41 50 50 4c 54 63 | 6c 4c 01 00 00 00 00 00 |~.APPLTc|lL......|
|00000040| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000050| 00 00 00 00 01 00 00 00 | 7d d0 00 00 7c d0 00 00 |........|}...|...|
|00000060| 01 1d 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000080| 00 00 0d 54 63 6c 20 53 | 68 65 6c 6c 20 38 2e 30 |...Tcl S|hell 8.0|
|00000090| 02 00 00 00 50 61 72 74 | 53 49 54 21 00 00 00 00 |....Part|SIT!....|
|000000a0| 00 00 00 00 50 61 72 74 | 53 49 54 21 00 00 00 00 |....Part|SIT!....|
|000000b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000c0| 00 00 00 00 b0 1d b6 36 | 00 00 00 00 00 00 7e ed |.......6|......~.|
|000000d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000100| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000110| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000120| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000130| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000140| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000150| 00 00 00 00 00 31 08 00 | 80 00 00 00 03 38 2e 30 |.....1..|.....8.0|
|00000160| 26 38 2e 30 2c 20 62 79 | 20 52 61 79 20 4a 6f 68 |&8.0, by| Ray Joh|
|00000170| 6e 73 6f 6e 20 a9 20 53 | 75 6e 20 4d 69 63 72 6f |nson . S|un Micro|
|00000180| 73 79 73 74 65 6d 73 00 | 00 00 26 08 00 80 00 00 |systems.|..&.....|
|00000190| 00 03 38 2e 30 1b 53 69 | 6d 70 6c 65 20 54 63 6c |..8.0.Si|mple Tcl|
|000001a0| 20 53 68 65 6c 6c 20 38 | 2e 30 20 a9 20 31 39 39 | Shell 8|.0 . 199|
|000001b0| 36 00 00 51 88 23 20 69 | 6e 69 74 2e 74 63 6c 20 |6..Q.# i|nit.tcl |
|000001c0| 2d 2d 0d 23 0d 23 20 44 | 65 66 61 75 6c 74 20 73 |--.#.# D|efault s|
|000001d0| 79 73 74 65 6d 20 73 74 | 61 72 74 75 70 20 66 69 |ystem st|artup fi|
|000001e0| 6c 65 20 66 6f 72 20 54 | 63 6c 2d 62 61 73 65 64 |le for T|cl-based|
|000001f0| 20 61 70 70 6c 69 63 61 | 74 69 6f 6e 73 2e 20 20 | applica|tions. |
|00000200| 44 65 66 69 6e 65 73 0d | 23 20 22 75 6e 6b 6e 6f |Defines.|# "unkno|
|00000210| 77 6e 22 20 70 72 6f 63 | 65 64 75 72 65 20 61 6e |wn" proc|edure an|
|00000220| 64 20 61 75 74 6f 2d 6c | 6f 61 64 20 66 61 63 69 |d auto-l|oad faci|
|00000230| 6c 69 74 69 65 73 2e 0d | 23 0d 23 20 53 43 43 53 |lities..|#.# SCCS|
|00000240| 3a 20 40 28 23 29 20 69 | 6e 69 74 2e 74 63 6c 20 |: @(#) i|nit.tcl |
|00000250| 31 2e 38 36 20 39 37 2f | 30 38 2f 30 38 20 31 30 |1.86 97/|08/08 10|
|00000260| 3a 33 37 3a 33 39 0d 23 | 0d 23 20 43 6f 70 79 72 |:37:39.#|.# Copyr|
|00000270| 69 67 68 74 20 28 63 29 | 20 31 39 39 31 2d 31 39 |ight (c)| 1991-19|
|00000280| 39 33 20 54 68 65 20 52 | 65 67 65 6e 74 73 20 6f |93 The R|egents o|
|00000290| 66 20 74 68 65 20 55 6e | 69 76 65 72 73 69 74 79 |f the Un|iversity|
|000002a0| 20 6f 66 20 43 61 6c 69 | 66 6f 72 6e 69 61 2e 0d | of Cali|fornia..|
|000002b0| 23 20 43 6f 70 79 72 69 | 67 68 74 20 28 63 29 20 |# Copyri|ght (c) |
|000002c0| 31 39 39 34 2d 31 39 39 | 36 20 53 75 6e 20 4d 69 |1994-199|6 Sun Mi|
|000002d0| 63 72 6f 73 79 73 74 65 | 6d 73 2c 20 49 6e 63 2e |crosyste|ms, Inc.|
|000002e0| 0d 23 0d 23 20 53 65 65 | 20 74 68 65 20 66 69 6c |.#.# See| the fil|
|000002f0| 65 20 22 6c 69 63 65 6e | 73 65 2e 74 65 72 6d 73 |e "licen|se.terms|
|00000300| 22 20 66 6f 72 20 69 6e | 66 6f 72 6d 61 74 69 6f |" for in|formatio|
|00000310| 6e 20 6f 6e 20 75 73 61 | 67 65 20 61 6e 64 20 72 |n on usa|ge and r|
|00000320| 65 64 69 73 74 72 69 62 | 75 74 69 6f 6e 0d 23 20 |edistrib|ution.# |
|00000330| 6f 66 20 74 68 69 73 20 | 66 69 6c 65 2c 20 61 6e |of this |file, an|
|00000340| 64 20 66 6f 72 20 61 20 | 44 49 53 43 4c 41 49 4d |d for a |DISCLAIM|
|00000350| 45 52 20 4f 46 20 41 4c | 4c 20 57 41 52 52 41 4e |ER OF AL|L WARRAN|
|00000360| 54 49 45 53 2e 0d 23 0d | 0d 69 66 20 7b 5b 69 6e |TIES..#.|.if {[in|
|00000370| 66 6f 20 63 6f 6d 6d 61 | 6e 64 73 20 70 61 63 6b |fo comma|nds pack|
|00000380| 61 67 65 5d 20 3d 3d 20 | 22 22 7d 20 7b 0d 20 20 |age] == |""} {. |
|00000390| 20 20 65 72 72 6f 72 20 | 22 76 65 72 73 69 6f 6e | error |"version|
|000003a0| 20 6d 69 73 6d 61 74 63 | 68 3a 20 6c 69 62 72 61 | mismatc|h: libra|
|000003b0| 72 79 5c 6e 73 63 72 69 | 70 74 73 20 65 78 70 65 |ry\nscri|pts expe|
|000003c0| 63 74 20 54 63 6c 20 76 | 65 72 73 69 6f 6e 20 37 |ct Tcl v|ersion 7|
|000003d0| 2e 35 62 31 20 6f 72 20 | 6c 61 74 65 72 20 62 75 |.5b1 or |later bu|
|000003e0| 74 20 74 68 65 20 6c 6f | 61 64 65 64 20 76 65 72 |t the lo|aded ver|
|000003f0| 73 69 6f 6e 20 69 73 5c | 6e 6f 6e 6c 79 20 5b 69 |sion is\|nonly [i|
|00000400| 6e 66 6f 20 70 61 74 63 | 68 6c 65 76 65 6c 5d 22 |nfo patc|hlevel]"|
|00000410| 0d 7d 0d 70 61 63 6b 61 | 67 65 20 72 65 71 75 69 |.}.packa|ge requi|
|00000420| 72 65 20 2d 65 78 61 63 | 74 20 54 63 6c 20 38 2e |re -exac|t Tcl 8.|
|00000430| 30 0d 0d 23 20 43 6f 6d | 70 75 74 65 20 74 68 65 |0..# Com|pute the|
|00000440| 20 61 75 74 6f 20 70 61 | 74 68 20 74 6f 20 75 73 | auto pa|th to us|
|00000450| 65 20 69 6e 20 74 68 69 | 73 20 69 6e 74 65 72 70 |e in thi|s interp|
|00000460| 72 65 74 65 72 2e 0d 23 | 20 28 61 75 74 6f 5f 70 |reter..#| (auto_p|
|00000470| 61 74 68 20 63 6f 75 6c | 64 20 62 65 20 61 6c 72 |ath coul|d be alr|
|00000480| 65 61 64 79 20 73 65 74 | 2c 20 69 6e 20 73 61 66 |eady set|, in saf|
|00000490| 65 20 69 6e 74 65 72 70 | 73 20 66 6f 72 20 69 6e |e interp|s for in|
|000004a0| 73 74 61 6e 63 65 29 0d | 69 66 20 7b 21 5b 69 6e |stance).|if {![in|
|000004b0| 66 6f 20 65 78 69 73 74 | 73 20 61 75 74 6f 5f 70 |fo exist|s auto_p|
|000004c0| 61 74 68 5d 7d 20 7b 0d | 20 20 20 20 69 66 20 5b |ath]} {.| if [|
|000004d0| 63 61 74 63 68 20 7b 73 | 65 74 20 61 75 74 6f 5f |catch {s|et auto_|
|000004e0| 70 61 74 68 20 24 65 6e | 76 28 54 43 4c 4c 49 42 |path $en|v(TCLLIB|
|000004f0| 50 41 54 48 29 7d 5d 20 | 7b 0d 09 73 65 74 20 61 |PATH)}] |{..set a|
|00000500| 75 74 6f 5f 70 61 74 68 | 20 22 22 0d 20 20 20 20 |uto_path| "". |
|00000510| 7d 0d 7d 0d 69 66 20 7b | 5b 6c 73 65 61 72 63 68 |}.}.if {|[lsearch|
|00000520| 20 2d 65 78 61 63 74 20 | 24 61 75 74 6f 5f 70 61 | -exact |$auto_pa|
|00000530| 74 68 20 5b 69 6e 66 6f | 20 6c 69 62 72 61 72 79 |th [info| library|
|00000540| 5d 5d 20 3c 20 30 7d 20 | 7b 0d 20 20 20 20 6c 61 |]] < 0} |{. la|
|00000550| 70 70 65 6e 64 20 61 75 | 74 6f 5f 70 61 74 68 20 |ppend au|to_path |
|00000560| 5b 69 6e 66 6f 20 6c 69 | 62 72 61 72 79 5d 0d 7d |[info li|brary].}|
|00000570| 0d 63 61 74 63 68 20 7b | 0d 20 20 20 20 66 6f 72 |.catch {|. for|
|00000580| 65 61 63 68 20 64 69 72 | 20 24 74 63 6c 5f 70 6b |each dir| $tcl_pk|
|00000590| 67 50 61 74 68 20 7b 0d | 09 69 66 20 7b 5b 6c 73 |gPath {.|.if {[ls|
|000005a0| 65 61 72 63 68 20 2d 65 | 78 61 63 74 20 24 61 75 |earch -e|xact $au|
|000005b0| 74 6f 5f 70 61 74 68 20 | 24 64 69 72 5d 20 3c 20 |to_path |$dir] < |
|000005c0| 30 7d 20 7b 0d 09 20 20 | 20 20 6c 61 70 70 65 6e |0} {.. | lappen|
|000005d0| 64 20 61 75 74 6f 5f 70 | 61 74 68 20 24 64 69 72 |d auto_p|ath $dir|
|000005e0| 0d 09 7d 0d 20 20 20 20 | 7d 0d 20 20 20 20 75 6e |..}. |}. un|
|000005f0| 73 65 74 20 64 69 72 0d | 7d 0d 0d 23 20 43 6f 6e |set dir.|}..# Con|
|00000600| 64 69 74 69 6f 6e 61 6c | 69 7a 65 20 66 6f 72 20 |ditional|ize for |
|00000610| 70 72 65 73 65 6e 63 65 | 20 6f 66 20 65 78 65 63 |presence| of exec|
|00000620| 2e 0d 0d 70 61 63 6b 61 | 67 65 20 75 6e 6b 6e 6f |...packa|ge unkno|
|00000630| 77 6e 20 74 63 6c 50 6b | 67 55 6e 6b 6e 6f 77 6e |wn tclPk|gUnknown|
|00000640| 0d 69 66 20 7b 5b 69 6e | 66 6f 20 63 6f 6d 6d 61 |.if {[in|fo comma|
|00000650| 6e 64 73 20 65 78 65 63 | 5d 20 3d 3d 20 22 22 7d |nds exec|] == ""}|
|00000660| 20 7b 0d 0d 20 20 20 20 | 23 20 53 6f 6d 65 20 6d | {.. |# Some m|
|00000670| 61 63 68 69 6e 65 73 2c | 20 73 75 63 68 20 61 73 |achines,| such as|
|00000680| 20 74 68 65 20 4d 61 63 | 69 6e 74 6f 73 68 2c 20 | the Mac|intosh, |
|00000690| 64 6f 20 6e 6f 74 20 68 | 61 76 65 20 65 78 65 63 |do not h|ave exec|
|000006a0| 2e 20 41 6c 73 6f 2c 20 | 6f 6e 20 61 6c 6c 0d 20 |. Also, |on all. |
|000006b0| 20 20 20 23 20 70 6c 61 | 74 66 6f 72 6d 73 2c 20 | # pla|tforms, |
|000006c0| 73 61 66 65 20 69 6e 74 | 65 72 70 72 65 74 65 72 |safe int|erpreter|
|000006d0| 73 20 64 6f 20 6e 6f 74 | 20 68 61 76 65 20 65 78 |s do not| have ex|
|000006e0| 65 63 2e 0d 0d 20 20 20 | 20 73 65 74 20 61 75 74 |ec... | set aut|
|000006f0| 6f 5f 6e 6f 65 78 65 63 | 20 31 0d 7d 0d 73 65 74 |o_noexec| 1.}.set|
|00000700| 20 65 72 72 6f 72 43 6f | 64 65 20 22 22 0d 73 65 | errorCo|de "".se|
|00000710| 74 20 65 72 72 6f 72 49 | 6e 66 6f 20 22 22 0d 0d |t errorI|nfo ""..|
|00000720| 23 20 44 65 66 69 6e 65 | 20 61 20 6c 6f 67 20 63 |# Define| a log c|
|00000730| 6f 6d 6d 61 6e 64 20 28 | 77 68 69 63 68 20 63 61 |ommand (|which ca|
|00000740| 6e 20 62 65 20 6f 76 65 | 72 77 69 74 74 65 6e 20 |n be ove|rwitten |
|00000750| 74 6f 20 6c 6f 67 20 65 | 72 72 6f 72 73 0d 23 20 |to log e|rrors.# |
|00000760| 64 69 66 66 65 72 65 6e | 74 6c 79 2c 20 73 70 65 |differen|tly, spe|
|00000770| 63 69 61 6c 6c 79 20 77 | 68 65 6e 20 73 74 64 65 |cially w|hen stde|
|00000780| 72 72 20 69 73 20 6e 6f | 74 20 61 76 61 69 6c 61 |rr is no|t availa|
|00000790| 62 6c 65 29 0d 0d 69 66 | 20 7b 5b 69 6e 66 6f 20 |ble)..if| {[info |
|000007a0| 63 6f 6d 6d 61 6e 64 73 | 20 74 63 6c 4c 6f 67 5d |commands| tclLog]|
|000007b0| 20 3d 3d 20 22 22 7d 20 | 7b 0d 20 20 20 20 70 72 | == ""} |{. pr|
|000007c0| 6f 63 20 74 63 6c 4c 6f | 67 20 7b 73 74 72 69 6e |oc tclLo|g {strin|
|000007d0| 67 7d 20 7b 0d 09 63 61 | 74 63 68 20 7b 70 75 74 |g} {..ca|tch {put|
|000007e0| 73 20 73 74 64 65 72 72 | 20 24 73 74 72 69 6e 67 |s stderr| $string|
|000007f0| 7d 0d 20 20 20 20 7d 0d | 7d 0d 0d 23 20 75 6e 6b |}. }.|}..# unk|
|00000800| 6e 6f 77 6e 20 2d 2d 0d | 23 20 54 68 69 73 20 70 |nown --.|# This p|
|00000810| 72 6f 63 65 64 75 72 65 | 20 69 73 20 63 61 6c 6c |rocedure| is call|
|00000820| 65 64 20 77 68 65 6e 20 | 61 20 54 63 6c 20 63 6f |ed when |a Tcl co|
|00000830| 6d 6d 61 6e 64 20 69 73 | 20 69 6e 76 6f 6b 65 64 |mmand is| invoked|
|00000840| 20 74 68 61 74 20 64 6f | 65 73 6e 27 74 0d 23 20 | that do|esn't.# |
|00000850| 65 78 69 73 74 20 69 6e | 20 74 68 65 20 69 6e 74 |exist in| the int|
|00000860| 65 72 70 72 65 74 65 72 | 2e 20 20 49 74 20 74 61 |erpreter|. It ta|
|00000870| 6b 65 73 20 74 68 65 20 | 66 6f 6c 6c 6f 77 69 6e |kes the |followin|
|00000880| 67 20 73 74 65 70 73 20 | 74 6f 20 6d 61 6b 65 20 |g steps |to make |
|00000890| 74 68 65 0d 23 20 63 6f | 6d 6d 61 6e 64 20 61 76 |the.# co|mmand av|
|000008a0| 61 69 6c 61 62 6c 65 3a | 0d 23 0d 23 09 31 2e 20 |ailable:|.#.#.1. |
|000008b0| 53 65 65 20 69 66 20 74 | 68 65 20 61 75 74 6f 6c |See if t|he autol|
|000008c0| 6f 61 64 20 66 61 63 69 | 6c 69 74 79 20 63 61 6e |oad faci|lity can|
|000008d0| 20 6c 6f 63 61 74 65 20 | 74 68 65 20 63 6f 6d 6d | locate |the comm|
|000008e0| 61 6e 64 20 69 6e 20 61 | 0d 23 09 20 20 20 54 63 |and in a|.#. Tc|
|000008f0| 6c 20 73 63 72 69 70 74 | 20 66 69 6c 65 2e 20 20 |l script| file. |
|00000900| 49 66 20 73 6f 2c 20 6c | 6f 61 64 20 69 74 20 61 |If so, l|oad it a|
|00000910| 6e 64 20 65 78 65 63 75 | 74 65 20 69 74 2e 0d 23 |nd execu|te it..#|
|00000920| 09 32 2e 20 49 66 20 74 | 68 65 20 63 6f 6d 6d 61 |.2. If t|he comma|
|00000930| 6e 64 20 77 61 73 20 69 | 6e 76 6f 6b 65 64 20 69 |nd was i|nvoked i|
|00000940| 6e 74 65 72 61 63 74 69 | 76 65 6c 79 20 61 74 20 |nteracti|vely at |
|00000950| 74 6f 70 2d 6c 65 76 65 | 6c 3a 0d 23 09 20 20 20 |top-leve|l:.#. |
|00000960| 20 28 61 29 20 73 65 65 | 20 69 66 20 74 68 65 20 | (a) see| if the |
|00000970| 63 6f 6d 6d 61 6e 64 20 | 65 78 69 73 74 73 20 61 |command |exists a|
|00000980| 73 20 61 6e 20 65 78 65 | 63 75 74 61 62 6c 65 20 |s an exe|cutable |
|00000990| 55 4e 49 58 20 70 72 6f | 67 72 61 6d 2e 0d 23 09 |UNIX pro|gram..#.|
|000009a0| 09 49 66 20 73 6f 2c 20 | 22 65 78 65 63 22 20 74 |.If so, |"exec" t|
|000009b0| 68 65 20 63 6f 6d 6d 61 | 6e 64 2e 0d 23 09 20 20 |he comma|nd..#. |
|000009c0| 20 20 28 62 29 20 73 65 | 65 20 69 66 20 74 68 65 | (b) se|e if the|
|000009d0| 20 63 6f 6d 6d 61 6e 64 | 20 72 65 71 75 65 73 74 | command| request|
|000009e0| 73 20 63 73 68 2d 6c 69 | 6b 65 20 68 69 73 74 6f |s csh-li|ke histo|
|000009f0| 72 79 20 73 75 62 73 74 | 69 74 75 74 69 6f 6e 0d |ry subst|itution.|
|00000a00| 23 09 09 69 6e 20 6f 6e | 65 20 6f 66 20 74 68 65 |#..in on|e of the|
|00000a10| 20 63 6f 6d 6d 6f 6e 20 | 66 6f 72 6d 73 20 21 21 | common |forms !!|
|00000a20| 2c 20 21 3c 6e 75 6d 62 | 65 72 3e 2c 20 6f 72 20 |, !<numb|er>, or |
|00000a30| 5e 6f 6c 64 5e 6e 65 77 | 2e 20 20 49 66 0d 23 09 |^old^new|. If.#.|
|00000a40| 09 73 6f 2c 20 65 6d 75 | 6c 61 74 65 20 63 73 68 |.so, emu|late csh|
|00000a50| 27 73 20 68 69 73 74 6f | 72 79 20 73 75 62 73 74 |'s histo|ry subst|
|00000a60| 69 74 75 74 69 6f 6e 2e | 0d 23 09 20 20 20 20 28 |itution.|.#. (|
|00000a70| 63 29 20 73 65 65 20 69 | 66 20 74 68 65 20 63 6f |c) see i|f the co|
|00000a80| 6d 6d 61 6e 64 20 69 73 | 20 61 20 75 6e 69 71 75 |mmand is| a uniqu|
|00000a90| 65 20 61 62 62 72 65 76 | 69 61 74 69 6f 6e 20 66 |e abbrev|iation f|
|00000aa0| 6f 72 20 61 6e 6f 74 68 | 65 72 0d 23 09 09 63 6f |or anoth|er.#..co|
|00000ab0| 6d 6d 61 6e 64 2e 20 20 | 49 66 20 73 6f 2c 20 69 |mmand. |If so, i|
|00000ac0| 6e 76 6f 6b 65 20 74 68 | 65 20 63 6f 6d 6d 61 6e |nvoke th|e comman|
|00000ad0| 64 2e 0d 23 0d 23 20 41 | 72 67 75 6d 65 6e 74 73 |d..#.# A|rguments|
|00000ae0| 3a 0d 23 20 61 72 67 73 | 20 2d 09 41 20 6c 69 73 |:.# args| -.A lis|
|00000af0| 74 20 77 68 6f 73 65 20 | 65 6c 65 6d 65 6e 74 73 |t whose |elements|
|00000b00| 20 61 72 65 20 74 68 65 | 20 77 6f 72 64 73 20 6f | are the| words o|
|00000b10| 66 20 74 68 65 20 6f 72 | 69 67 69 6e 61 6c 0d 23 |f the or|iginal.#|
|00000b20| 09 09 63 6f 6d 6d 61 6e | 64 2c 20 69 6e 63 6c 75 |..comman|d, inclu|
|00000b30| 64 69 6e 67 20 74 68 65 | 20 63 6f 6d 6d 61 6e 64 |ding the| command|
|00000b40| 20 6e 61 6d 65 2e 0d 0d | 70 72 6f 63 20 75 6e 6b | name...|proc unk|
|00000b50| 6e 6f 77 6e 20 61 72 67 | 73 20 7b 0d 20 20 20 20 |nown arg|s {. |
|00000b60| 67 6c 6f 62 61 6c 20 61 | 75 74 6f 5f 6e 6f 65 78 |global a|uto_noex|
|00000b70| 65 63 20 61 75 74 6f 5f | 6e 6f 6c 6f 61 64 20 65 |ec auto_|noload e|
|00000b80| 6e 76 20 75 6e 6b 6e 6f | 77 6e 5f 70 65 6e 64 69 |nv unkno|wn_pendi|
|00000b90| 6e 67 20 74 63 6c 5f 69 | 6e 74 65 72 61 63 74 69 |ng tcl_i|nteracti|
|00000ba0| 76 65 0d 20 20 20 20 67 | 6c 6f 62 61 6c 20 65 72 |ve. g|lobal er|
|00000bb0| 72 6f 72 43 6f 64 65 20 | 65 72 72 6f 72 49 6e 66 |rorCode |errorInf|
|00000bc0| 6f 0d 0d 20 20 20 20 23 | 20 53 61 76 65 20 74 68 |o.. #| Save th|
|00000bd0| 65 20 76 61 6c 75 65 73 | 20 6f 66 20 65 72 72 6f |e values| of erro|
|00000be0| 72 43 6f 64 65 20 61 6e | 64 20 65 72 72 6f 72 49 |rCode an|d errorI|
|00000bf0| 6e 66 6f 20 76 61 72 69 | 61 62 6c 65 73 2c 20 73 |nfo vari|ables, s|
|00000c00| 69 6e 63 65 20 74 68 65 | 79 0d 20 20 20 20 23 20 |ince the|y. # |
|00000c10| 6d 61 79 20 67 65 74 20 | 6d 6f 64 69 66 69 65 64 |may get |modified|
|00000c20| 20 69 66 20 63 61 75 67 | 68 74 20 65 72 72 6f 72 | if caug|ht error|
|00000c30| 73 20 6f 63 63 75 72 20 | 62 65 6c 6f 77 2e 20 20 |s occur |below. |
|00000c40| 54 68 65 20 76 61 72 69 | 61 62 6c 65 73 20 77 69 |The vari|ables wi|
|00000c50| 6c 6c 0d 20 20 20 20 23 | 20 62 65 20 72 65 73 74 |ll. #| be rest|
|00000c60| 6f 72 65 64 20 6a 75 73 | 74 20 62 65 66 6f 72 65 |ored jus|t before|
|00000c70| 20 72 65 2d 65 78 65 63 | 75 74 69 6e 67 20 74 68 | re-exec|uting th|
|00000c80| 65 20 6d 69 73 73 69 6e | 67 20 63 6f 6d 6d 61 6e |e missin|g comman|
|00000c90| 64 2e 0d 0d 20 20 20 20 | 73 65 74 20 73 61 76 65 |d... |set save|
|00000ca0| 64 45 72 72 6f 72 43 6f | 64 65 20 24 65 72 72 6f |dErrorCo|de $erro|
|00000cb0| 72 43 6f 64 65 0d 20 20 | 20 20 73 65 74 20 73 61 |rCode. | set sa|
|00000cc0| 76 65 64 45 72 72 6f 72 | 49 6e 66 6f 20 24 65 72 |vedError|Info $er|
|00000cd0| 72 6f 72 49 6e 66 6f 0d | 20 20 20 20 73 65 74 20 |rorInfo.| set |
|00000ce0| 6e 61 6d 65 20 5b 6c 69 | 6e 64 65 78 20 24 61 72 |name [li|ndex $ar|
|00000cf0| 67 73 20 30 5d 0d 20 20 | 20 20 69 66 20 21 5b 69 |gs 0]. | if ![i|
|00000d00| 6e 66 6f 20 65 78 69 73 | 74 73 20 61 75 74 6f 5f |nfo exis|ts auto_|
|00000d10| 6e 6f 6c 6f 61 64 5d 20 | 7b 0d 09 23 0d 09 23 20 |noload] |{..#..# |
|00000d20| 4d 61 6b 65 20 73 75 72 | 65 20 77 65 27 72 65 20 |Make sur|e we're |
|00000d30| 6e 6f 74 20 74 72 79 69 | 6e 67 20 74 6f 20 6c 6f |not tryi|ng to lo|
|00000d40| 61 64 20 74 68 65 20 73 | 61 6d 65 20 70 72 6f 63 |ad the s|ame proc|
|00000d50| 20 74 77 69 63 65 2e 0d | 09 23 0d 09 69 66 20 5b | twice..|.#..if [|
|00000d60| 69 6e 66 6f 20 65 78 69 | 73 74 73 20 75 6e 6b 6e |info exi|sts unkn|
|00000d70| 6f 77 6e 5f 70 65 6e 64 | 69 6e 67 28 24 6e 61 6d |own_pend|ing($nam|
|00000d80| 65 29 5d 20 7b 0d 09 20 | 20 20 20 72 65 74 75 72 |e)] {.. | retur|
|00000d90| 6e 20 2d 63 6f 64 65 20 | 65 72 72 6f 72 20 22 73 |n -code |error "s|
|00000da0| 65 6c 66 2d 72 65 66 65 | 72 65 6e 74 69 61 6c 20 |elf-refe|rential |
|00000db0| 72 65 63 75 72 73 69 6f | 6e 20 69 6e 20 5c 22 75 |recursio|n in \"u|
|00000dc0| 6e 6b 6e 6f 77 6e 5c 22 | 20 66 6f 72 20 63 6f 6d |nknown\"| for com|
|00000dd0| 6d 61 6e 64 20 5c 22 24 | 6e 61 6d 65 5c 22 22 3b |mand \"$|name\"";|
|00000de0| 0d 09 7d 0d 09 73 65 74 | 20 75 6e 6b 6e 6f 77 6e |..}..set| unknown|
|00000df0| 5f 70 65 6e 64 69 6e 67 | 28 24 6e 61 6d 65 29 20 |_pending|($name) |
|00000e00| 70 65 6e 64 69 6e 67 3b | 0d 09 73 65 74 20 72 65 |pending;|..set re|
|00000e10| 74 20 5b 63 61 74 63 68 | 20 7b 61 75 74 6f 5f 6c |t [catch| {auto_l|
|00000e20| 6f 61 64 20 24 6e 61 6d | 65 7d 20 6d 73 67 5d 0d |oad $nam|e} msg].|
|00000e30| 09 75 6e 73 65 74 20 75 | 6e 6b 6e 6f 77 6e 5f 70 |.unset u|nknown_p|
|00000e40| 65 6e 64 69 6e 67 28 24 | 6e 61 6d 65 29 3b 0d 09 |ending($|name);..|
|00000e50| 69 66 20 7b 24 72 65 74 | 20 21 3d 20 30 7d 20 7b |if {$ret| != 0} {|
|00000e60| 0d 09 20 20 20 20 72 65 | 74 75 72 6e 20 2d 63 6f |.. re|turn -co|
|00000e70| 64 65 20 24 72 65 74 20 | 2d 65 72 72 6f 72 63 6f |de $ret |-errorco|
|00000e80| 64 65 20 24 65 72 72 6f | 72 43 6f 64 65 20 5c 0d |de $erro|rCode \.|
|00000e90| 09 09 22 65 72 72 6f 72 | 20 77 68 69 6c 65 20 61 |.."error| while a|
|00000ea0| 75 74 6f 6c 6f 61 64 69 | 6e 67 20 5c 22 24 6e 61 |utoloadi|ng \"$na|
|00000eb0| 6d 65 5c 22 3a 20 24 6d | 73 67 22 0d 09 7d 0d 09 |me\": $m|sg"..}..|
|00000ec0| 69 66 20 21 5b 61 72 72 | 61 79 20 73 69 7a 65 20 |if ![arr|ay size |
|00000ed0| 75 6e 6b 6e 6f 77 6e 5f | 70 65 6e 64 69 6e 67 5d |unknown_|pending]|
|00000ee0| 20 7b 0d 09 20 20 20 20 | 75 6e 73 65 74 20 75 6e | {.. |unset un|
|00000ef0| 6b 6e 6f 77 6e 5f 70 65 | 6e 64 69 6e 67 0d 09 7d |known_pe|nding..}|
|00000f00| 0d 09 69 66 20 24 6d 73 | 67 20 7b 0d 09 20 20 20 |..if $ms|g {.. |
|00000f10| 20 73 65 74 20 65 72 72 | 6f 72 43 6f 64 65 20 24 | set err|orCode $|
|00000f20| 73 61 76 65 64 45 72 72 | 6f 72 43 6f 64 65 0d 09 |savedErr|orCode..|
|00000f30| 20 20 20 20 73 65 74 20 | 65 72 72 6f 72 49 6e 66 | set |errorInf|
|00000f40| 6f 20 24 73 61 76 65 64 | 45 72 72 6f 72 49 6e 66 |o $saved|ErrorInf|
|00000f50| 6f 0d 09 20 20 20 20 73 | 65 74 20 63 6f 64 65 20 |o.. s|et code |
|00000f60| 5b 63 61 74 63 68 20 7b | 75 70 6c 65 76 65 6c 20 |[catch {|uplevel |
|00000f70| 31 20 24 61 72 67 73 7d | 20 6d 73 67 5d 0d 09 20 |1 $args}| msg].. |
|00000f80| 20 20 20 69 66 20 7b 24 | 63 6f 64 65 20 3d 3d 20 | if {$|code == |
|00000f90| 20 31 7d 20 7b 0d 09 09 | 23 0d 09 09 23 20 53 74 | 1} {...|#...# St|
|00000fa0| 72 69 70 20 74 68 65 20 | 6c 61 73 74 20 66 69 76 |rip the |last fiv|
|00000fb0| 65 20 6c 69 6e 65 73 20 | 6f 66 66 20 74 68 65 20 |e lines |off the |
|00000fc0| 65 72 72 6f 72 20 73 74 | 61 63 6b 20 28 74 68 65 |error st|ack (the|
|00000fd0| 79 27 72 65 0d 09 09 23 | 20 66 72 6f 6d 20 74 68 |y're...#| from th|
|00000fe0| 65 20 22 75 70 6c 65 76 | 65 6c 22 20 63 6f 6d 6d |e "uplev|el" comm|
|00000ff0| 61 6e 64 29 2e 0d 09 09 | 23 0d 0d 09 09 73 65 74 |and)....|#....set|
|00001000| 20 6e 65 77 20 5b 73 70 | 6c 69 74 20 24 65 72 72 | new [sp|lit $err|
|00001010| 6f 72 49 6e 66 6f 20 5c | 6e 5d 0d 09 09 73 65 74 |orInfo \|n]...set|
|00001020| 20 6e 65 77 20 5b 6a 6f | 69 6e 20 5b 6c 72 61 6e | new [jo|in [lran|
|00001030| 67 65 20 24 6e 65 77 20 | 30 20 5b 65 78 70 72 20 |ge $new |0 [expr |
|00001040| 5b 6c 6c 65 6e 67 74 68 | 20 24 6e 65 77 5d 20 2d |[llength| $new] -|
|00001050| 20 36 5d 5d 20 5c 6e 5d | 0d 09 09 72 65 74 75 72 | 6]] \n]|...retur|
|00001060| 6e 20 2d 63 6f 64 65 20 | 65 72 72 6f 72 20 2d 65 |n -code |error -e|
|00001070| 72 72 6f 72 63 6f 64 65 | 20 24 65 72 72 6f 72 43 |rrorcode| $errorC|
|00001080| 6f 64 65 20 5c 0d 09 09 | 09 2d 65 72 72 6f 72 69 |ode \...|.-errori|
|00001090| 6e 66 6f 20 24 6e 65 77 | 20 24 6d 73 67 0d 09 20 |nfo $new| $msg.. |
|000010a0| 20 20 20 7d 20 65 6c 73 | 65 20 7b 0d 09 09 72 65 | } els|e {...re|
|000010b0| 74 75 72 6e 20 2d 63 6f | 64 65 20 24 63 6f 64 65 |turn -co|de $code|
|000010c0| 20 24 6d 73 67 0d 09 20 | 20 20 20 7d 0d 09 7d 0d | $msg.. | }..}.|
|000010d0| 20 20 20 20 7d 0d 20 20 | 20 20 69 66 20 7b 28 5b | }. | if {([|
|000010e0| 69 6e 66 6f 20 6c 65 76 | 65 6c 5d 20 3d 3d 20 31 |info lev|el] == 1|
|000010f0| 29 20 26 26 20 28 5b 69 | 6e 66 6f 20 73 63 72 69 |) && ([i|nfo scri|
|00001100| 70 74 5d 20 3d 3d 20 22 | 22 29 20 5c 0d 09 20 20 |pt] == "|") \.. |
|00001110| 20 20 26 26 20 5b 69 6e | 66 6f 20 65 78 69 73 74 | && [in|fo exist|
|00001120| 73 20 74 63 6c 5f 69 6e | 74 65 72 61 63 74 69 76 |s tcl_in|teractiv|
|00001130| 65 5d 20 26 26 20 24 74 | 63 6c 5f 69 6e 74 65 72 |e] && $t|cl_inter|
|00001140| 61 63 74 69 76 65 7d 20 | 7b 0d 09 69 66 20 21 5b |active} |{..if ![|
|00001150| 69 6e 66 6f 20 65 78 69 | 73 74 73 20 61 75 74 6f |info exi|sts auto|
|00001160| 5f 6e 6f 65 78 65 63 5d | 20 7b 0d 09 20 20 20 20 |_noexec]| {.. |
|00001170| 73 65 74 20 6e 65 77 20 | 5b 61 75 74 6f 5f 65 78 |set new |[auto_ex|
|00001180| 65 63 6f 6b 20 24 6e 61 | 6d 65 5d 0d 09 20 20 20 |ecok $na|me].. |
|00001190| 20 69 66 20 7b 24 6e 65 | 77 20 21 3d 20 22 22 7d | if {$ne|w != ""}|
|000011a0| 20 7b 0d 09 09 73 65 74 | 20 65 72 72 6f 72 43 6f | {...set| errorCo|
|000011b0| 64 65 20 24 73 61 76 65 | 64 45 72 72 6f 72 43 6f |de $save|dErrorCo|
|000011c0| 64 65 0d 09 09 73 65 74 | 20 65 72 72 6f 72 49 6e |de...set| errorIn|
|000011d0| 66 6f 20 24 73 61 76 65 | 64 45 72 72 6f 72 49 6e |fo $save|dErrorIn|
|000011e0| 66 6f 0d 09 09 73 65 74 | 20 72 65 64 69 72 20 22 |fo...set| redir "|
|000011f0| 22 0d 09 09 69 66 20 7b | 5b 69 6e 66 6f 20 63 6f |"...if {|[info co|
|00001200| 6d 6d 61 6e 64 73 20 63 | 6f 6e 73 6f 6c 65 5d 20 |mmands c|onsole] |
|00001210| 3d 3d 20 22 22 7d 20 7b | 0d 09 09 20 20 20 20 73 |== ""} {|... s|
|00001220| 65 74 20 72 65 64 69 72 | 20 22 3e 26 40 73 74 64 |et redir| ">&@std|
|00001230| 6f 75 74 20 3c 40 73 74 | 64 69 6e 22 0d 09 09 7d |out <@st|din"...}|
|00001240| 0d 09 09 72 65 74 75 72 | 6e 20 5b 75 70 6c 65 76 |...retur|n [uplev|
|00001250| 65 6c 20 65 78 65 63 20 | 24 72 65 64 69 72 20 24 |el exec |$redir $|
|00001260| 6e 65 77 20 5b 6c 72 61 | 6e 67 65 20 24 61 72 67 |new [lra|nge $arg|
|00001270| 73 20 31 20 65 6e 64 5d | 5d 0d 09 20 20 20 20 7d |s 1 end]|].. }|
|00001280| 0d 09 7d 0d 09 73 65 74 | 20 65 72 72 6f 72 43 6f |..}..set| errorCo|
|00001290| 64 65 20 24 73 61 76 65 | 64 45 72 72 6f 72 43 6f |de $save|dErrorCo|
|000012a0| 64 65 0d 09 73 65 74 20 | 65 72 72 6f 72 49 6e 66 |de..set |errorInf|
|000012b0| 6f 20 24 73 61 76 65 64 | 45 72 72 6f 72 49 6e 66 |o $saved|ErrorInf|
|000012c0| 6f 0d 09 69 66 20 7b 24 | 6e 61 6d 65 20 3d 3d 20 |o..if {$|name == |
|000012d0| 22 21 21 22 7d 20 7b 0d | 09 20 20 20 20 73 65 74 |"!!"} {.|. set|
|000012e0| 20 6e 65 77 63 6d 64 20 | 5b 68 69 73 74 6f 72 79 | newcmd |[history|
|000012f0| 20 65 76 65 6e 74 5d 0d | 09 7d 20 65 6c 73 65 69 | event].|.} elsei|
|00001300| 66 20 7b 5b 72 65 67 65 | 78 70 20 7b 5e 21 28 2e |f {[rege|xp {^!(.|
|00001310| 2b 29 24 7d 20 24 6e 61 | 6d 65 20 64 75 6d 6d 79 |+)$} $na|me dummy|
|00001320| 20 65 76 65 6e 74 5d 7d | 20 7b 0d 09 20 20 20 20 | event]}| {.. |
|00001330| 73 65 74 20 6e 65 77 63 | 6d 64 20 5b 68 69 73 74 |set newc|md [hist|
|00001340| 6f 72 79 20 65 76 65 6e | 74 20 24 65 76 65 6e 74 |ory even|t $event|
|00001350| 5d 0d 09 7d 20 65 6c 73 | 65 69 66 20 7b 5b 72 65 |]..} els|eif {[re|
|00001360| 67 65 78 70 20 7b 5e 5c | 5e 28 5b 5e 5e 5d 2a 29 |gexp {^\|^([^^]*)|
|00001370| 5c 5e 28 5b 5e 5e 5d 2a | 29 5c 5e 3f 24 7d 20 24 |\^([^^]*|)\^?$} $|
|00001380| 6e 61 6d 65 20 64 75 6d | 6d 79 20 6f 6c 64 20 6e |name dum|my old n|
|00001390| 65 77 5d 7d 20 7b 0d 09 | 20 20 20 20 73 65 74 20 |ew]} {..| set |
|000013a0| 6e 65 77 63 6d 64 20 5b | 68 69 73 74 6f 72 79 20 |newcmd [|history |
|000013b0| 65 76 65 6e 74 20 2d 31 | 5d 0d 09 20 20 20 20 63 |event -1|].. c|
|000013c0| 61 74 63 68 20 7b 72 65 | 67 73 75 62 20 2d 61 6c |atch {re|gsub -al|
|000013d0| 6c 20 2d 2d 20 24 6f 6c | 64 20 24 6e 65 77 63 6d |l -- $ol|d $newcm|
|000013e0| 64 20 24 6e 65 77 20 6e | 65 77 63 6d 64 7d 0d 09 |d $new n|ewcmd}..|
|000013f0| 7d 0d 09 69 66 20 5b 69 | 6e 66 6f 20 65 78 69 73 |}..if [i|nfo exis|
|00001400| 74 73 20 6e 65 77 63 6d | 64 5d 20 7b 0d 09 20 20 |ts newcm|d] {.. |
|00001410| 20 20 74 63 6c 4c 6f 67 | 20 24 6e 65 77 63 6d 64 | tclLog| $newcmd|
|00001420| 0d 09 20 20 20 20 68 69 | 73 74 6f 72 79 20 63 68 |.. hi|story ch|
|00001430| 61 6e 67 65 20 24 6e 65 | 77 63 6d 64 20 30 0d 09 |ange $ne|wcmd 0..|
|00001440| 20 20 20 20 72 65 74 75 | 72 6e 20 5b 75 70 6c 65 | retu|rn [uple|
|00001450| 76 65 6c 20 24 6e 65 77 | 63 6d 64 5d 0d 09 7d 0d |vel $new|cmd]..}.|
|00001460| 0d 09 73 65 74 20 72 65 | 74 20 5b 63 61 74 63 68 |..set re|t [catch|
|00001470| 20 7b 73 65 74 20 63 6d | 64 73 20 5b 69 6e 66 6f | {set cm|ds [info|
|00001480| 20 63 6f 6d 6d 61 6e 64 | 73 20 24 6e 61 6d 65 2a | command|s $name*|
|00001490| 5d 7d 20 6d 73 67 5d 0d | 09 69 66 20 7b 5b 73 74 |]} msg].|.if {[st|
|000014a0| 72 69 6e 67 20 63 6f 6d | 70 61 72 65 20 24 6e 61 |ring com|pare $na|
|000014b0| 6d 65 20 22 3a 3a 22 5d | 20 3d 3d 20 30 7d 20 7b |me "::"]| == 0} {|
|000014c0| 0d 09 20 20 20 20 73 65 | 74 20 6e 61 6d 65 20 22 |.. se|t name "|
|000014d0| 22 0d 09 7d 0d 09 69 66 | 20 7b 24 72 65 74 20 21 |"..}..if| {$ret !|
|000014e0| 3d 20 30 7d 20 7b 0d 09 | 20 20 20 20 72 65 74 75 |= 0} {..| retu|
|000014f0| 72 6e 20 2d 63 6f 64 65 | 20 24 72 65 74 20 2d 65 |rn -code| $ret -e|
|00001500| 72 72 6f 72 63 6f 64 65 | 20 24 65 72 72 6f 72 43 |rrorcode| $errorC|
|00001510| 6f 64 65 20 5c 0d 09 09 | 22 65 72 72 6f 72 20 69 |ode \...|"error i|
|00001520| 6e 20 75 6e 6b 6e 6f 77 | 6e 20 77 68 69 6c 65 20 |n unknow|n while |
|00001530| 63 68 65 63 6b 69 6e 67 | 20 69 66 20 5c 22 24 6e |checking| if \"$n|
|00001540| 61 6d 65 5c 22 20 69 73 | 20 61 20 75 6e 69 71 75 |ame\" is| a uniqu|
|00001550| 65 20 63 6f 6d 6d 61 6e | 64 20 61 62 62 72 65 76 |e comman|d abbrev|
|00001560| 69 61 74 69 6f 6e 3a 20 | 24 6d 73 67 22 0d 09 7d |iation: |$msg"..}|
|00001570| 0d 09 69 66 20 7b 5b 6c | 6c 65 6e 67 74 68 20 24 |..if {[l|length $|
|00001580| 63 6d 64 73 5d 20 3d 3d | 20 31 7d 20 7b 0d 09 20 |cmds] ==| 1} {.. |
|00001590| 20 20 20 72 65 74 75 72 | 6e 20 5b 75 70 6c 65 76 | retur|n [uplev|
|000015a0| 65 6c 20 5b 6c 72 65 70 | 6c 61 63 65 20 24 61 72 |el [lrep|lace $ar|
|000015b0| 67 73 20 30 20 30 20 24 | 63 6d 64 73 5d 5d 0d 09 |gs 0 0 $|cmds]]..|
|000015c0| 7d 0d 09 69 66 20 7b 5b | 6c 6c 65 6e 67 74 68 20 |}..if {[|llength |
|000015d0| 24 63 6d 64 73 5d 20 21 | 3d 20 30 7d 20 7b 0d 09 |$cmds] !|= 0} {..|
|000015e0| 20 20 20 20 69 66 20 7b | 24 6e 61 6d 65 20 3d 3d | if {|$name ==|
|000015f0| 20 22 22 7d 20 7b 0d 09 | 09 72 65 74 75 72 6e 20 | ""} {..|.return |
|00001600| 2d 63 6f 64 65 20 65 72 | 72 6f 72 20 22 65 6d 70 |-code er|ror "emp|
|00001610| 74 79 20 63 6f 6d 6d 61 | 6e 64 20 6e 61 6d 65 20 |ty comma|nd name |
|00001620| 5c 22 5c 22 22 0d 09 20 | 20 20 20 7d 20 65 6c 73 |\"\"".. | } els|
|00001630| 65 20 7b 0d 09 09 72 65 | 74 75 72 6e 20 2d 63 6f |e {...re|turn -co|
|00001640| 64 65 20 65 72 72 6f 72 | 20 5c 0d 09 09 09 22 61 |de error| \...."a|
|00001650| 6d 62 69 67 75 6f 75 73 | 20 63 6f 6d 6d 61 6e 64 |mbiguous| command|
|00001660| 20 6e 61 6d 65 20 5c 22 | 24 6e 61 6d 65 5c 22 3a | name \"|$name\":|
|00001670| 20 5b 6c 73 6f 72 74 20 | 24 63 6d 64 73 5d 22 0d | [lsort |$cmds]".|
|00001680| 09 20 20 20 20 7d 0d 09 | 7d 0d 20 20 20 20 7d 0d |. }..|}. }.|
|00001690| 20 20 20 20 72 65 74 75 | 72 6e 20 2d 63 6f 64 65 | retu|rn -code|
|000016a0| 20 65 72 72 6f 72 20 22 | 69 6e 76 61 6c 69 64 20 | error "|invalid |
|000016b0| 63 6f 6d 6d 61 6e 64 20 | 6e 61 6d 65 20 5c 22 24 |command |name \"$|
|000016c0| 6e 61 6d 65 5c 22 22 0d | 7d 0d 0d 23 20 61 75 74 |name\"".|}..# aut|
|000016d0| 6f 5f 6c 6f 61 64 20 2d | 2d 0d 23 20 43 68 65 63 |o_load -|-.# Chec|
|000016e0| 6b 73 20 61 20 63 6f 6c | 6c 65 63 74 69 6f 6e 20 |ks a col|lection |
|000016f0| 6f 66 20 6c 69 62 72 61 | 72 79 20 64 69 72 65 63 |of libra|ry direc|
|00001700| 74 6f 72 69 65 73 20 74 | 6f 20 73 65 65 20 69 66 |tories t|o see if|
|00001710| 20 61 20 70 72 6f 63 65 | 64 75 72 65 0d 23 20 69 | a proce|dure.# i|
|00001720| 73 20 64 65 66 69 6e 65 | 64 20 69 6e 20 6f 6e 65 |s define|d in one|
|00001730| 20 6f 66 20 74 68 65 6d | 2e 20 20 49 66 20 73 6f | of them|. If so|
|00001740| 2c 20 69 74 20 73 6f 75 | 72 63 65 73 20 74 68 65 |, it sou|rces the|
|00001750| 20 61 70 70 72 6f 70 72 | 69 61 74 65 0d 23 20 6c | appropr|iate.# l|
|00001760| 69 62 72 61 72 79 20 66 | 69 6c 65 20 74 6f 20 63 |ibrary f|ile to c|
|00001770| 72 65 61 74 65 20 74 68 | 65 20 70 72 6f 63 65 64 |reate th|e proced|
|00001780| 75 72 65 2e 20 20 52 65 | 74 75 72 6e 73 20 31 20 |ure. Re|turns 1 |
|00001790| 69 66 20 69 74 20 73 75 | 63 63 65 73 73 66 75 6c |if it su|ccessful|
|000017a0| 6c 79 0d 23 20 6c 6f 61 | 64 65 64 20 74 68 65 20 |ly.# loa|ded the |
|000017b0| 70 72 6f 63 65 64 75 72 | 65 2c 20 30 20 6f 74 68 |procedur|e, 0 oth|
|000017c0| 65 72 77 69 73 65 2e 0d | 23 0d 23 20 41 72 67 75 |erwise..|#.# Argu|
|000017d0| 6d 65 6e 74 73 3a 20 0d | 23 20 63 6d 64 20 2d 09 |ments: .|# cmd -.|
|000017e0| 09 09 4e 61 6d 65 20 6f | 66 20 74 68 65 20 63 6f |..Name o|f the co|
|000017f0| 6d 6d 61 6e 64 20 74 6f | 20 66 69 6e 64 20 61 6e |mmand to| find an|
|00001800| 64 20 6c 6f 61 64 2e 0d | 0d 70 72 6f 63 20 61 75 |d load..|.proc au|
|00001810| 74 6f 5f 6c 6f 61 64 20 | 63 6d 64 20 7b 0d 20 20 |to_load |cmd {. |
|00001820| 20 20 67 6c 6f 62 61 6c | 20 61 75 74 6f 5f 69 6e | global| auto_in|
|00001830| 64 65 78 20 61 75 74 6f | 5f 6f 6c 64 70 61 74 68 |dex auto|_oldpath|
|00001840| 20 61 75 74 6f 5f 70 61 | 74 68 20 65 6e 76 20 65 | auto_pa|th env e|
|00001850| 72 72 6f 72 49 6e 66 6f | 20 65 72 72 6f 72 43 6f |rrorInfo| errorCo|
|00001860| 64 65 0d 0d 20 20 20 20 | 66 6f 72 65 61 63 68 20 |de.. |foreach |
|00001870| 6e 61 6d 65 20 5b 6c 69 | 73 74 20 24 63 6d 64 20 |name [li|st $cmd |
|00001880| 3a 3a 24 63 6d 64 5d 20 | 7b 0d 09 69 66 20 5b 69 |::$cmd] |{..if [i|
|00001890| 6e 66 6f 20 65 78 69 73 | 74 73 20 61 75 74 6f 5f |nfo exis|ts auto_|
|000018a0| 69 6e 64 65 78 28 24 6e | 61 6d 65 29 5d 20 7b 0d |index($n|ame)] {.|
|000018b0| 09 20 20 20 20 75 70 6c | 65 76 65 6c 20 23 30 20 |. upl|evel #0 |
|000018c0| 24 61 75 74 6f 5f 69 6e | 64 65 78 28 24 6e 61 6d |$auto_in|dex($nam|
|000018d0| 65 29 0d 09 20 20 20 20 | 72 65 74 75 72 6e 20 5b |e).. |return [|
|000018e0| 65 78 70 72 20 7b 5b 69 | 6e 66 6f 20 63 6f 6d 6d |expr {[i|nfo comm|
|000018f0| 61 6e 64 73 20 24 6e 61 | 6d 65 5d 20 21 3d 20 22 |ands $na|me] != "|
|00001900| 22 7d 5d 0d 09 7d 0d 20 | 20 20 20 7d 0d 20 20 20 |"}]..}. | }. |
|00001910| 20 69 66 20 21 5b 69 6e | 66 6f 20 65 78 69 73 74 | if ![in|fo exist|
|00001920| 73 20 61 75 74 6f 5f 70 | 61 74 68 5d 20 7b 0d 09 |s auto_p|ath] {..|
|00001930| 72 65 74 75 72 6e 20 30 | 0d 20 20 20 20 7d 0d 20 |return 0|. }. |
|00001940| 20 20 20 69 66 20 5b 69 | 6e 66 6f 20 65 78 69 73 | if [i|nfo exis|
|00001950| 74 73 20 61 75 74 6f 5f | 6f 6c 64 70 61 74 68 5d |ts auto_|oldpath]|
|00001960| 20 7b 0d 09 69 66 20 7b | 24 61 75 74 6f 5f 6f 6c | {..if {|$auto_ol|
|00001970| 64 70 61 74 68 20 3d 3d | 20 24 61 75 74 6f 5f 70 |dpath ==| $auto_p|
|00001980| 61 74 68 7d 20 7b 0d 09 | 20 20 20 20 72 65 74 75 |ath} {..| retu|
|00001990| 72 6e 20 30 0d 09 7d 0d | 20 20 20 20 7d 0d 20 20 |rn 0..}.| }. |
|000019a0| 20 20 73 65 74 20 61 75 | 74 6f 5f 6f 6c 64 70 61 | set au|to_oldpa|
|000019b0| 74 68 20 24 61 75 74 6f | 5f 70 61 74 68 0d 0d 20 |th $auto|_path.. |
|000019c0| 20 20 20 23 20 43 68 65 | 63 6b 20 69 66 20 77 65 | # Che|ck if we|
|000019d0| 20 61 72 65 20 61 20 73 | 61 66 65 20 69 6e 74 65 | are a s|afe inte|
|000019e0| 72 70 72 65 74 65 72 2e | 20 49 6e 20 74 68 61 74 |rpreter.| In that|
|000019f0| 20 63 61 73 65 2c 20 77 | 65 20 73 75 70 70 6f 72 | case, w|e suppor|
|00001a00| 74 20 6f 6e 6c 79 0d 20 | 20 20 20 23 20 6e 65 77 |t only. | # new|
|00001a10| 65 72 20 66 6f 72 6d 61 | 74 20 74 63 6c 49 6e 64 |er forma|t tclInd|
|00001a20| 65 78 20 66 69 6c 65 73 | 2e 0d 0d 20 20 20 20 73 |ex files|... s|
|00001a30| 65 74 20 69 73 73 61 66 | 65 20 5b 69 6e 74 65 72 |et issaf|e [inter|
|00001a40| 70 20 69 73 73 61 66 65 | 5d 0d 20 20 20 20 66 6f |p issafe|]. fo|
|00001a50| 72 20 7b 73 65 74 20 69 | 20 5b 65 78 70 72 20 5b |r {set i| [expr [|
|00001a60| 6c 6c 65 6e 67 74 68 20 | 24 61 75 74 6f 5f 70 61 |llength |$auto_pa|
|00001a70| 74 68 5d 20 2d 20 31 5d | 7d 20 7b 24 69 20 3e 3d |th] - 1]|} {$i >=|
|00001a80| 20 30 7d 20 7b 69 6e 63 | 72 20 69 20 2d 31 7d 20 | 0} {inc|r i -1} |
|00001a90| 7b 0d 09 73 65 74 20 64 | 69 72 20 5b 6c 69 6e 64 |{..set d|ir [lind|
|00001aa0| 65 78 20 24 61 75 74 6f | 5f 70 61 74 68 20 24 69 |ex $auto|_path $i|
|00001ab0| 5d 0d 09 73 65 74 20 66 | 20 22 22 0d 09 69 66 20 |]..set f| ""..if |
|00001ac0| 7b 24 69 73 73 61 66 65 | 7d 20 7b 0d 09 20 20 20 |{$issafe|} {.. |
|00001ad0| 20 63 61 74 63 68 20 7b | 73 6f 75 72 63 65 20 5b | catch {|source [|
|00001ae0| 66 69 6c 65 20 6a 6f 69 | 6e 20 24 64 69 72 20 74 |file joi|n $dir t|
|00001af0| 63 6c 49 6e 64 65 78 5d | 7d 0d 09 7d 20 65 6c 73 |clIndex]|}..} els|
|00001b00| 65 69 66 20 5b 63 61 74 | 63 68 20 7b 73 65 74 20 |eif [cat|ch {set |
|00001b10| 66 20 5b 6f 70 65 6e 20 | 5b 66 69 6c 65 20 6a 6f |f [open |[file jo|
|00001b20| 69 6e 20 24 64 69 72 20 | 74 63 6c 49 6e 64 65 78 |in $dir |tclIndex|
|00001b30| 5d 5d 7d 5d 20 7b 0d 09 | 20 20 20 20 63 6f 6e 74 |]]}] {..| cont|
|00001b40| 69 6e 75 65 0d 09 7d 20 | 65 6c 73 65 20 7b 0d 09 |inue..} |else {..|
|00001b50| 20 20 20 20 73 65 74 20 | 65 72 72 6f 72 20 5b 63 | set |error [c|
|00001b60| 61 74 63 68 20 7b 0d 09 | 09 73 65 74 20 69 64 20 |atch {..|.set id |
|00001b70| 5b 67 65 74 73 20 24 66 | 5d 0d 09 09 69 66 20 7b |[gets $f|]...if {|
|00001b80| 24 69 64 20 3d 3d 20 22 | 23 20 54 63 6c 20 61 75 |$id == "|# Tcl au|
|00001b90| 74 6f 6c 6f 61 64 20 69 | 6e 64 65 78 20 66 69 6c |toload i|ndex fil|
|00001ba0| 65 2c 20 76 65 72 73 69 | 6f 6e 20 32 2e 30 22 7d |e, versi|on 2.0"}|
|00001bb0| 20 7b 0d 09 09 20 20 20 | 20 65 76 61 6c 20 5b 72 | {... | eval [r|
|00001bc0| 65 61 64 20 24 66 5d 0d | 09 09 7d 20 65 6c 73 65 |ead $f].|..} else|
|00001bd0| 69 66 20 7b 24 69 64 20 | 3d 3d 20 5c 0d 09 09 20 |if {$id |== \... |
|00001be0| 20 20 20 22 23 20 54 63 | 6c 20 61 75 74 6f 6c 6f | "# Tc|l autolo|
|00001bf0| 61 64 20 69 6e 64 65 78 | 20 66 69 6c 65 3a 20 65 |ad index| file: e|
|00001c00| 61 63 68 20 6c 69 6e 65 | 20 69 64 65 6e 74 69 66 |ach line| identif|
|00001c10| 69 65 73 20 61 20 54 63 | 6c 22 7d 20 7b 0d 09 09 |ies a Tc|l"} {...|
|00001c20| 20 20 20 20 77 68 69 6c | 65 20 7b 5b 67 65 74 73 | whil|e {[gets|
|00001c30| 20 24 66 20 6c 69 6e 65 | 5d 20 3e 3d 20 30 7d 20 | $f line|] >= 0} |
|00001c40| 7b 0d 09 09 09 69 66 20 | 7b 28 5b 73 74 72 69 6e |{....if |{([strin|
|00001c50| 67 20 69 6e 64 65 78 20 | 24 6c 69 6e 65 20 30 5d |g index |$line 0]|
|00001c60| 20 3d 3d 20 22 23 22 29 | 0d 09 09 09 09 7c 7c 20 | == "#")|.....|| |
|00001c70| 28 5b 6c 6c 65 6e 67 74 | 68 20 24 6c 69 6e 65 5d |([llengt|h $line]|
|00001c80| 20 21 3d 20 32 29 7d 20 | 7b 0d 09 09 09 20 20 20 | != 2)} |{.... |
|00001c90| 20 63 6f 6e 74 69 6e 75 | 65 0d 09 09 09 7d 0d 09 | continu|e....}..|
|00001ca0| 09 09 73 65 74 20 6e 61 | 6d 65 20 5b 6c 69 6e 64 |..set na|me [lind|
|00001cb0| 65 78 20 24 6c 69 6e 65 | 20 30 5d 0d 09 09 09 73 |ex $line| 0]....s|
|00001cc0| 65 74 20 61 75 74 6f 5f | 69 6e 64 65 78 28 24 6e |et auto_|index($n|
|00001cd0| 61 6d 65 29 20 5c 0d 09 | 09 09 20 20 20 20 22 73 |ame) \..|.. "s|
|00001ce0| 6f 75 72 63 65 20 5b 66 | 69 6c 65 20 6a 6f 69 6e |ource [f|ile join|
|00001cf0| 20 24 64 69 72 20 5b 6c | 69 6e 64 65 78 20 24 6c | $dir [l|index $l|
|00001d00| 69 6e 65 20 31 5d 5d 22 | 0d 09 09 20 20 20 20 7d |ine 1]]"|... }|
|00001d10| 0d 09 09 7d 20 65 6c 73 | 65 20 7b 0d 09 09 20 20 |...} els|e {... |
|00001d20| 20 20 65 72 72 6f 72 20 | 5c 0d 09 09 20 20 20 20 | error |\... |
|00001d30| 20 20 22 5b 66 69 6c 65 | 20 6a 6f 69 6e 20 24 64 | "[file| join $d|
|00001d40| 69 72 20 74 63 6c 49 6e | 64 65 78 5d 20 69 73 6e |ir tclIn|dex] isn|
|00001d50| 27 74 20 61 20 70 72 6f | 70 65 72 20 54 63 6c 20 |'t a pro|per Tcl |
|00001d60| 69 6e 64 65 78 20 66 69 | 6c 65 22 0d 09 09 7d 0d |index fi|le"...}.|
|00001d70| 09 20 20 20 20 7d 20 6d | 73 67 5d 0d 09 20 20 20 |. } m|sg].. |
|00001d80| 20 69 66 20 7b 24 66 20 | 21 3d 20 22 22 7d 20 7b | if {$f |!= ""} {|
|00001d90| 0d 09 09 63 6c 6f 73 65 | 20 24 66 0d 09 20 20 20 |...close| $f.. |
|00001da0| 20 7d 0d 09 20 20 20 20 | 69 66 20 24 65 72 72 6f | }.. |if $erro|
|00001db0| 72 20 7b 0d 09 09 65 72 | 72 6f 72 20 24 6d 73 67 |r {...er|ror $msg|
|00001dc0| 20 24 65 72 72 6f 72 49 | 6e 66 6f 20 24 65 72 72 | $errorI|nfo $err|
|00001dd0| 6f 72 43 6f 64 65 0d 09 | 20 20 20 20 7d 0d 09 7d |orCode..| }..}|
|00001de0| 0d 20 20 20 20 7d 0d 20 | 20 20 20 69 66 20 5b 69 |. }. | if [i|
|00001df0| 6e 66 6f 20 65 78 69 73 | 74 73 20 61 75 74 6f 5f |nfo exis|ts auto_|
|00001e00| 69 6e 64 65 78 28 24 63 | 6d 64 29 5d 20 7b 0d 09 |index($c|md)] {..|
|00001e10| 75 70 6c 65 76 65 6c 20 | 23 30 20 24 61 75 74 6f |uplevel |#0 $auto|
|00001e20| 5f 69 6e 64 65 78 28 24 | 63 6d 64 29 0d 09 69 66 |_index($|cmd)..if|
|00001e30| 20 7b 5b 69 6e 66 6f 20 | 63 6f 6d 6d 61 6e 64 73 | {[info |commands|
|00001e40| 20 24 63 6d 64 5d 20 21 | 3d 20 22 22 7d 20 7b 0d | $cmd] !|= ""} {.|
|00001e50| 09 20 20 20 20 72 65 74 | 75 72 6e 20 31 0d 09 7d |. ret|urn 1..}|
|00001e60| 0d 20 20 20 20 7d 0d 20 | 20 20 20 72 65 74 75 72 |. }. | retur|
|00001e70| 6e 20 30 0d 7d 0d 0d 69 | 66 20 7b 5b 73 74 72 69 |n 0.}..i|f {[stri|
|00001e80| 6e 67 20 63 6f 6d 70 61 | 72 65 20 24 74 63 6c 5f |ng compa|re $tcl_|
|00001e90| 70 6c 61 74 66 6f 72 6d | 28 70 6c 61 74 66 6f 72 |platform|(platfor|
|00001ea0| 6d 29 20 77 69 6e 64 6f | 77 73 5d 20 3d 3d 20 30 |m) windo|ws] == 0|
|00001eb0| 7d 20 7b 0d 0d 23 20 61 | 75 74 6f 5f 65 78 65 63 |} {..# a|uto_exec|
|00001ec0| 6f 6b 20 2d 2d 0d 23 0d | 23 20 52 65 74 75 72 6e |ok --.#.|# Return|
|00001ed0| 73 20 73 74 72 69 6e 67 | 20 74 68 61 74 20 69 6e |s string| that in|
|00001ee0| 64 69 63 61 74 65 73 20 | 6e 61 6d 65 20 6f 66 20 |dicates |name of |
|00001ef0| 70 72 6f 67 72 61 6d 20 | 74 6f 20 65 78 65 63 75 |program |to execu|
|00001f00| 74 65 20 69 66 20 0d 23 | 20 6e 61 6d 65 20 63 6f |te if .#| name co|
|00001f10| 72 72 65 73 70 6f 6e 64 | 73 20 74 6f 20 61 20 73 |rrespond|s to a s|
|00001f20| 68 65 6c 6c 20 62 75 69 | 6c 74 69 6e 20 6f 72 20 |hell bui|ltin or |
|00001f30| 61 6e 20 65 78 65 63 75 | 74 61 62 6c 65 20 69 6e |an execu|table in|
|00001f40| 20 74 68 65 0d 23 20 57 | 69 6e 64 6f 77 73 20 73 | the.# W|indows s|
|00001f50| 65 61 72 63 68 20 70 61 | 74 68 2c 20 6f 72 20 22 |earch pa|th, or "|
|00001f60| 22 20 6f 74 68 65 72 77 | 69 73 65 2e 20 20 42 75 |" otherw|ise. Bu|
|00001f70| 69 6c 64 73 20 61 6e 20 | 61 73 73 6f 63 69 61 74 |ilds an |associat|
|00001f80| 69 76 65 20 0d 23 20 61 | 72 72 61 79 20 61 75 74 |ive .# a|rray aut|
|00001f90| 6f 5f 65 78 65 63 73 20 | 74 68 61 74 20 63 61 63 |o_execs |that cac|
|00001fa0| 68 65 73 20 69 6e 66 6f | 72 6d 61 74 69 6f 6e 20 |hes info|rmation |
|00001fb0| 61 62 6f 75 74 20 70 72 | 65 76 69 6f 75 73 20 63 |about pr|evious c|
|00001fc0| 68 65 63 6b 73 2c 20 0d | 23 20 66 6f 72 20 73 70 |hecks, .|# for sp|
|00001fd0| 65 65 64 2e 0d 23 0d 23 | 20 41 72 67 75 6d 65 6e |eed..#.#| Argumen|
|00001fe0| 74 73 3a 20 0d 23 20 6e | 61 6d 65 20 2d 09 09 09 |ts: .# n|ame -...|
|00001ff0| 4e 61 6d 65 20 6f 66 20 | 61 20 63 6f 6d 6d 61 6e |Name of |a comman|
|00002000| 64 2e 0d 0d 23 20 57 69 | 6e 64 6f 77 73 20 76 65 |d...# Wi|ndows ve|
|00002010| 72 73 69 6f 6e 2e 0d 23 | 0d 23 20 4e 6f 74 65 20 |rsion..#|.# Note |
|00002020| 74 68 61 74 20 69 6e 66 | 6f 20 65 78 65 63 75 74 |that inf|o execut|
|00002030| 61 62 6c 65 20 64 6f 65 | 73 6e 27 74 20 77 6f 72 |able doe|sn't wor|
|00002040| 6b 20 75 6e 64 65 72 20 | 57 69 6e 64 6f 77 73 2c |k under |Windows,|
|00002050| 20 73 6f 20 77 65 20 68 | 61 76 65 20 74 6f 0d 23 | so we h|ave to.#|
|00002060| 20 6c 6f 6f 6b 20 66 6f | 72 20 66 69 6c 65 73 20 | look fo|r files |
|00002070| 77 69 74 68 20 2e 65 78 | 65 2c 20 2e 63 6f 6d 2c |with .ex|e, .com,|
|00002080| 20 6f 72 20 2e 62 61 74 | 20 65 78 74 65 6e 73 69 | or .bat| extensi|
|00002090| 6f 6e 73 2e 20 20 41 6c | 73 6f 2c 20 74 68 65 20 |ons. Al|so, the |
|000020a0| 70 61 74 68 0d 23 20 6d | 61 79 20 62 65 20 69 6e |path.# m|ay be in|
|000020b0| 20 74 68 65 20 50 61 74 | 68 20 6f 72 20 50 41 54 | the Pat|h or PAT|
|000020c0| 48 20 65 6e 76 69 72 6f | 6e 6d 65 6e 74 20 76 61 |H enviro|nment va|
|000020d0| 72 69 61 62 6c 65 73 2c | 20 61 6e 64 20 70 61 74 |riables,| and pat|
|000020e0| 68 0d 23 20 63 6f 6d 70 | 6f 6e 65 6e 74 73 20 61 |h.# comp|onents a|
|000020f0| 72 65 20 73 65 70 61 72 | 61 74 65 64 20 77 69 74 |re separ|ated wit|
|00002100| 68 20 73 65 6d 69 63 6f | 6c 6f 6e 73 2c 20 6e 6f |h semico|lons, no|
|00002110| 74 20 63 6f 6c 6f 6e 73 | 20 61 73 20 75 6e 64 65 |t colons| as unde|
|00002120| 72 20 55 6e 69 78 2e 0d | 23 0d 70 72 6f 63 20 61 |r Unix..|#.proc a|
|00002130| 75 74 6f 5f 65 78 65 63 | 6f 6b 20 6e 61 6d 65 20 |uto_exec|ok name |
|00002140| 7b 0d 20 20 20 20 67 6c | 6f 62 61 6c 20 61 75 74 |{. gl|obal aut|
|00002150| 6f 5f 65 78 65 63 73 20 | 65 6e 76 20 74 63 6c 5f |o_execs |env tcl_|
|00002160| 70 6c 61 74 66 6f 72 6d | 0d 0d 20 20 20 20 69 66 |platform|.. if|
|00002170| 20 5b 69 6e 66 6f 20 65 | 78 69 73 74 73 20 61 75 | [info e|xists au|
|00002180| 74 6f 5f 65 78 65 63 73 | 28 24 6e 61 6d 65 29 5d |to_execs|($name)]|
|00002190| 20 7b 0d 09 72 65 74 75 | 72 6e 20 24 61 75 74 6f | {..retu|rn $auto|
|000021a0| 5f 65 78 65 63 73 28 24 | 6e 61 6d 65 29 0d 20 20 |_execs($|name). |
|000021b0| 20 20 7d 0d 20 20 20 20 | 73 65 74 20 61 75 74 6f | }. |set auto|
|000021c0| 5f 65 78 65 63 73 28 24 | 6e 61 6d 65 29 20 22 22 |_execs($|name) ""|
|000021d0| 0d 0d 20 20 20 20 69 66 | 20 7b 5b 6c 73 65 61 72 |.. if| {[lsear|
|000021e0| 63 68 20 2d 65 78 61 63 | 74 20 7b 63 6c 73 20 63 |ch -exac|t {cls c|
|000021f0| 6f 70 79 20 64 61 74 65 | 20 64 65 6c 20 65 72 61 |opy date| del era|
|00002200| 73 65 20 64 69 72 20 65 | 63 68 6f 20 6d 6b 64 69 |se dir e|cho mkdi|
|00002210| 72 20 6d 64 20 72 65 6e | 61 6d 65 20 0d 09 20 20 |r md ren|ame .. |
|00002220| 20 20 72 65 6e 20 72 6d | 64 69 72 20 72 64 20 74 | ren rm|dir rd t|
|00002230| 69 6d 65 20 74 79 70 65 | 20 76 65 72 20 76 6f 6c |ime type| ver vol|
|00002240| 7d 20 24 6e 61 6d 65 5d | 20 21 3d 20 2d 31 7d 20 |} $name]| != -1} |
|00002250| 7b 0d 09 72 65 74 75 72 | 6e 20 5b 73 65 74 20 61 |{..retur|n [set a|
|00002260| 75 74 6f 5f 65 78 65 63 | 73 28 24 6e 61 6d 65 29 |uto_exec|s($name)|
|00002270| 20 5b 6c 69 73 74 20 24 | 65 6e 76 28 43 4f 4d 53 | [list $|env(COMS|
|00002280| 50 45 43 29 20 2f 63 20 | 24 6e 61 6d 65 5d 5d 0d |PEC) /c |$name]].|
|00002290| 20 20 20 20 7d 0d 0d 20 | 20 20 20 69 66 20 7b 5b | }.. | if {[|
|000022a0| 6c 6c 65 6e 67 74 68 20 | 5b 66 69 6c 65 20 73 70 |llength |[file sp|
|000022b0| 6c 69 74 20 24 6e 61 6d | 65 5d 5d 20 21 3d 20 31 |lit $nam|e]] != 1|
|000022c0| 7d 20 7b 0d 09 66 6f 72 | 65 61 63 68 20 65 78 74 |} {..for|each ext|
|000022d0| 20 7b 7b 7d 20 2e 63 6f | 6d 20 2e 65 78 65 20 2e | {{} .co|m .exe .|
|000022e0| 62 61 74 7d 20 7b 0d 09 | 20 20 20 20 73 65 74 20 |bat} {..| set |
|000022f0| 66 69 6c 65 20 24 7b 6e | 61 6d 65 7d 24 7b 65 78 |file ${n|ame}${ex|
|00002300| 74 7d 0d 09 20 20 20 20 | 69 66 20 7b 5b 66 69 6c |t}.. |if {[fil|
|00002310| 65 20 65 78 69 73 74 73 | 20 24 66 69 6c 65 5d 20 |e exists| $file] |
|00002320| 26 26 20 21 5b 66 69 6c | 65 20 69 73 64 69 72 65 |&& ![fil|e isdire|
|00002330| 63 74 6f 72 79 20 24 66 | 69 6c 65 5d 7d 20 7b 0d |ctory $f|ile]} {.|
|00002340| 09 09 72 65 74 75 72 6e | 20 5b 73 65 74 20 61 75 |..return| [set au|
|00002350| 74 6f 5f 65 78 65 63 73 | 28 24 6e 61 6d 65 29 20 |to_execs|($name) |
|00002360| 5b 6c 69 73 74 20 24 66 | 69 6c 65 5d 5d 0d 09 20 |[list $f|ile]].. |
|00002370| 20 20 20 7d 0d 09 7d 0d | 09 72 65 74 75 72 6e 20 | }..}.|.return |
|00002380| 22 22 0d 20 20 20 20 7d | 0d 0d 20 20 20 20 73 65 |"". }|.. se|
|00002390| 74 20 70 61 74 68 20 22 | 5b 66 69 6c 65 20 64 69 |t path "|[file di|
|000023a0| 72 6e 61 6d 65 20 5b 69 | 6e 66 6f 20 6e 61 6d 65 |rname [i|nfo name|
|000023b0| 6f 66 5d 5d 3b 2e 3b 22 | 0d 20 20 20 20 69 66 20 |of]];.;"|. if |
|000023c0| 7b 5b 69 6e 66 6f 20 65 | 78 69 73 74 73 20 65 6e |{[info e|xists en|
|000023d0| 76 28 57 49 4e 44 49 52 | 29 5d 7d 20 7b 0d 09 73 |v(WINDIR|)]} {..s|
|000023e0| 65 74 20 77 69 6e 64 69 | 72 20 24 65 6e 76 28 57 |et windi|r $env(W|
|000023f0| 49 4e 44 49 52 29 20 0d | 20 20 20 20 7d 0d 20 20 |INDIR) .| }. |
|00002400| 20 20 69 66 20 7b 5b 69 | 6e 66 6f 20 65 78 69 73 | if {[i|nfo exis|
|00002410| 74 73 20 77 69 6e 64 69 | 72 5d 7d 20 7b 0d 09 69 |ts windi|r]} {..i|
|00002420| 66 20 7b 24 74 63 6c 5f | 70 6c 61 74 66 6f 72 6d |f {$tcl_|platform|
|00002430| 28 6f 73 29 20 3d 3d 20 | 22 57 69 6e 64 6f 77 73 |(os) == |"Windows|
|00002440| 20 4e 54 22 7d 20 7b 0d | 09 20 20 20 20 61 70 70 | NT"} {.|. app|
|00002450| 65 6e 64 20 70 61 74 68 | 20 22 24 77 69 6e 64 69 |end path| "$windi|
|00002460| 72 2f 73 79 73 74 65 6d | 33 32 3b 22 0d 09 7d 0d |r/system|32;"..}.|
|00002470| 09 61 70 70 65 6e 64 20 | 70 61 74 68 20 22 24 77 |.append |path "$w|
|00002480| 69 6e 64 69 72 2f 73 79 | 73 74 65 6d 3b 24 77 69 |indir/sy|stem;$wi|
|00002490| 6e 64 69 72 3b 22 0d 20 | 20 20 20 7d 0d 0d 20 20 |ndir;". | }.. |
|000024a0| 20 20 69 66 20 7b 5b 69 | 6e 66 6f 20 65 78 69 73 | if {[i|nfo exis|
|000024b0| 74 73 20 65 6e 76 28 50 | 41 54 48 29 5d 7d 20 7b |ts env(P|ATH)]} {|
|000024c0| 0d 09 61 70 70 65 6e 64 | 20 70 61 74 68 20 24 65 |..append| path $e|
|000024d0| 6e 76 28 50 41 54 48 29 | 0d 20 20 20 20 7d 0d 0d |nv(PATH)|. }..|
|000024e0| 20 20 20 20 66 6f 72 65 | 61 63 68 20 64 69 72 20 | fore|ach dir |
|000024f0| 5b 73 70 6c 69 74 20 24 | 70 61 74 68 20 7b 3b 7d |[split $|path {;}|
|00002500| 5d 20 7b 0d 09 69 66 20 | 7b 24 64 69 72 20 3d 3d |] {..if |{$dir ==|
|00002510| 20 22 22 7d 20 7b 0d 09 | 20 20 20 20 73 65 74 20 | ""} {..| set |
|00002520| 64 69 72 20 2e 0d 09 7d | 0d 09 66 6f 72 65 61 63 |dir ...}|..foreac|
|00002530| 68 20 65 78 74 20 7b 7b | 7d 20 2e 63 6f 6d 20 2e |h ext {{|} .com .|
|00002540| 65 78 65 20 2e 62 61 74 | 7d 20 7b 0d 09 20 20 20 |exe .bat|} {.. |
|00002550| 20 73 65 74 20 66 69 6c | 65 20 5b 66 69 6c 65 20 | set fil|e [file |
|00002560| 6a 6f 69 6e 20 24 64 69 | 72 20 24 7b 6e 61 6d 65 |join $di|r ${name|
|00002570| 7d 24 7b 65 78 74 7d 5d | 0d 09 20 20 20 20 69 66 |}${ext}]|.. if|
|00002580| 20 7b 5b 66 69 6c 65 20 | 65 78 69 73 74 73 20 24 | {[file |exists $|
|00002590| 66 69 6c 65 5d 20 26 26 | 20 21 5b 66 69 6c 65 20 |file] &&| ![file |
|000025a0| 69 73 64 69 72 65 63 74 | 6f 72 79 20 24 66 69 6c |isdirect|ory $fil|
|000025b0| 65 5d 7d 20 7b 0d 09 09 | 72 65 74 75 72 6e 20 5b |e]} {...|return [|
|000025c0| 73 65 74 20 61 75 74 6f | 5f 65 78 65 63 73 28 24 |set auto|_execs($|
|000025d0| 6e 61 6d 65 29 20 5b 6c | 69 73 74 20 24 66 69 6c |name) [l|ist $fil|
|000025e0| 65 5d 5d 0d 09 20 20 20 | 20 7d 0d 09 7d 0d 20 20 |e]].. | }..}. |
|000025f0| 20 20 7d 0d 20 20 20 20 | 72 65 74 75 72 6e 20 22 | }. |return "|
|00002600| 22 0d 7d 0d 0d 7d 20 65 | 6c 73 65 20 7b 0d 0d 23 |".}..} e|lse {..#|
|00002610| 20 61 75 74 6f 5f 65 78 | 65 63 6f 6b 20 2d 2d 0d | auto_ex|ecok --.|
|00002620| 23 0d 23 20 52 65 74 75 | 72 6e 73 20 73 74 72 69 |#.# Retu|rns stri|
|00002630| 6e 67 20 74 68 61 74 20 | 69 6e 64 69 63 61 74 65 |ng that |indicate|
|00002640| 73 20 6e 61 6d 65 20 6f | 66 20 70 72 6f 67 72 61 |s name o|f progra|
|00002650| 6d 20 74 6f 20 65 78 65 | 63 75 74 65 20 69 66 20 |m to exe|cute if |
|00002660| 0d 23 20 6e 61 6d 65 20 | 63 6f 72 72 65 73 70 6f |.# name |correspo|
|00002670| 6e 64 73 20 74 6f 20 61 | 6e 20 65 78 65 63 75 74 |nds to a|n execut|
|00002680| 61 62 6c 65 20 69 6e 20 | 74 68 65 20 70 61 74 68 |able in |the path|
|00002690| 2e 20 42 75 69 6c 64 73 | 20 61 6e 20 61 73 73 6f |. Builds| an asso|
|000026a0| 63 69 61 74 69 76 65 20 | 0d 23 20 61 72 72 61 79 |ciative |.# array|
|000026b0| 20 61 75 74 6f 5f 65 78 | 65 63 73 20 74 68 61 74 | auto_ex|ecs that|
|000026c0| 20 63 61 63 68 65 73 20 | 69 6e 66 6f 72 6d 61 74 | caches |informat|
|000026d0| 69 6f 6e 20 61 62 6f 75 | 74 20 70 72 65 76 69 6f |ion abou|t previo|
|000026e0| 75 73 20 63 68 65 63 6b | 73 2c 20 0d 23 20 66 6f |us check|s, .# fo|
|000026f0| 72 20 73 70 65 65 64 2e | 0d 23 0d 23 20 41 72 67 |r speed.|.#.# Arg|
|00002700| 75 6d 65 6e 74 73 3a 20 | 0d 23 20 6e 61 6d 65 20 |uments: |.# name |
|00002710| 2d 09 09 09 4e 61 6d 65 | 20 6f 66 20 61 20 63 6f |-...Name| of a co|
|00002720| 6d 6d 61 6e 64 2e 0d 0d | 23 20 55 6e 69 78 20 76 |mmand...|# Unix v|
|00002730| 65 72 73 69 6f 6e 2e 0d | 23 0d 70 72 6f 63 20 61 |ersion..|#.proc a|
|00002740| 75 74 6f 5f 65 78 65 63 | 6f 6b 20 6e 61 6d 65 20 |uto_exec|ok name |
|00002750| 7b 0d 20 20 20 20 67 6c | 6f 62 61 6c 20 61 75 74 |{. gl|obal aut|
|00002760| 6f 5f 65 78 65 63 73 20 | 65 6e 76 0d 0d 20 20 20 |o_execs |env.. |
|00002770| 20 69 66 20 5b 69 6e 66 | 6f 20 65 78 69 73 74 73 | if [inf|o exists|
|00002780| 20 61 75 74 6f 5f 65 78 | 65 63 73 28 24 6e 61 6d | auto_ex|ecs($nam|
|00002790| 65 29 5d 20 7b 0d 09 72 | 65 74 75 72 6e 20 24 61 |e)] {..r|eturn $a|
|000027a0| 75 74 6f 5f 65 78 65 63 | 73 28 24 6e 61 6d 65 29 |uto_exec|s($name)|
|000027b0| 0d 20 20 20 20 7d 0d 20 | 20 20 20 73 65 74 20 61 |. }. | set a|
|000027c0| 75 74 6f 5f 65 78 65 63 | 73 28 24 6e 61 6d 65 29 |uto_exec|s($name)|
|000027d0| 20 22 22 0d 20 20 20 20 | 69 66 20 7b 5b 6c 6c 65 | "". |if {[lle|
|000027e0| 6e 67 74 68 20 5b 66 69 | 6c 65 20 73 70 6c 69 74 |ngth [fi|le split|
|000027f0| 20 24 6e 61 6d 65 5d 5d | 20 21 3d 20 31 7d 20 7b | $name]]| != 1} {|
|00002800| 0d 09 69 66 20 7b 5b 66 | 69 6c 65 20 65 78 65 63 |..if {[f|ile exec|
|00002810| 75 74 61 62 6c 65 20 24 | 6e 61 6d 65 5d 20 26 26 |utable $|name] &&|
|00002820| 20 21 5b 66 69 6c 65 20 | 69 73 64 69 72 65 63 74 | ![file |isdirect|
|00002830| 6f 72 79 20 24 6e 61 6d | 65 5d 7d 20 7b 0d 09 20 |ory $nam|e]} {.. |
|00002840| 20 20 20 73 65 74 20 61 | 75 74 6f 5f 65 78 65 63 | set a|uto_exec|
|00002850| 73 28 24 6e 61 6d 65 29 | 20 5b 6c 69 73 74 20 24 |s($name)| [list $|
|00002860| 6e 61 6d 65 5d 0d 09 7d | 0d 09 72 65 74 75 72 6e |name]..}|..return|
|00002870| 20 24 61 75 74 6f 5f 65 | 78 65 63 73 28 24 6e 61 | $auto_e|xecs($na|
|00002880| 6d 65 29 0d 20 20 20 20 | 7d 0d 20 20 20 20 66 6f |me). |}. fo|
|00002890| 72 65 61 63 68 20 64 69 | 72 20 5b 73 70 6c 69 74 |reach di|r [split|
|000028a0| 20 24 65 6e 76 28 50 41 | 54 48 29 20 3a 5d 20 7b | $env(PA|TH) :] {|
|000028b0| 0d 09 69 66 20 7b 24 64 | 69 72 20 3d 3d 20 22 22 |..if {$d|ir == ""|
|000028c0| 7d 20 7b 0d 09 20 20 20 | 20 73 65 74 20 64 69 72 |} {.. | set dir|
|000028d0| 20 2e 0d 09 7d 0d 09 73 | 65 74 20 66 69 6c 65 20 | ...}..s|et file |
|000028e0| 5b 66 69 6c 65 20 6a 6f | 69 6e 20 24 64 69 72 20 |[file jo|in $dir |
|000028f0| 24 6e 61 6d 65 5d 0d 09 | 69 66 20 7b 5b 66 69 6c |$name]..|if {[fil|
|00002900| 65 20 65 78 65 63 75 74 | 61 62 6c 65 20 24 66 69 |e execut|able $fi|
|00002910| 6c 65 5d 20 26 26 20 21 | 5b 66 69 6c 65 20 69 73 |le] && !|[file is|
|00002920| 64 69 72 65 63 74 6f 72 | 79 20 24 66 69 6c 65 5d |director|y $file]|
|00002930| 7d 20 7b 0d 09 20 20 20 | 20 73 65 74 20 61 75 74 |} {.. | set aut|
|00002940| 6f 5f 65 78 65 63 73 28 | 24 6e 61 6d 65 29 20 5b |o_execs(|$name) [|
|00002950| 6c 69 73 74 20 24 66 69 | 6c 65 5d 0d 09 20 20 20 |list $fi|le].. |
|00002960| 20 72 65 74 75 72 6e 20 | 24 61 75 74 6f 5f 65 78 | return |$auto_ex|
|00002970| 65 63 73 28 24 6e 61 6d | 65 29 0d 09 7d 0d 20 20 |ecs($nam|e)..}. |
|00002980| 20 20 7d 0d 20 20 20 20 | 72 65 74 75 72 6e 20 22 | }. |return "|
|00002990| 22 0d 7d 0d 0d 7d 0d 23 | 20 61 75 74 6f 5f 72 65 |".}..}.#| auto_re|
|000029a0| 73 65 74 20 2d 2d 0d 23 | 20 44 65 73 74 72 6f 79 |set --.#| Destroy|
|000029b0| 20 61 6c 6c 20 63 61 63 | 68 65 64 20 69 6e 66 6f | all cac|hed info|
|000029c0| 72 6d 61 74 69 6f 6e 20 | 66 6f 72 20 61 75 74 6f |rmation |for auto|
|000029d0| 2d 6c 6f 61 64 69 6e 67 | 20 61 6e 64 20 61 75 74 |-loading| and aut|
|000029e0| 6f 2d 65 78 65 63 75 74 | 69 6f 6e 2c 0d 23 20 73 |o-execut|ion,.# s|
|000029f0| 6f 20 74 68 61 74 20 74 | 68 65 20 69 6e 66 6f 72 |o that t|he infor|
|00002a00| 6d 61 74 69 6f 6e 20 67 | 65 74 73 20 72 65 63 6f |mation g|ets reco|
|00002a10| 6d 70 75 74 65 64 20 74 | 68 65 20 6e 65 78 74 20 |mputed t|he next |
|00002a20| 74 69 6d 65 20 69 74 27 | 73 20 6e 65 65 64 65 64 |time it'|s needed|
|00002a30| 2e 0d 23 20 41 6c 73 6f | 20 64 65 6c 65 74 65 20 |..# Also| delete |
|00002a40| 61 6e 79 20 70 72 6f 63 | 65 64 75 72 65 73 20 74 |any proc|edures t|
|00002a50| 68 61 74 20 61 72 65 20 | 6c 69 73 74 65 64 20 69 |hat are |listed i|
|00002a60| 6e 20 74 68 65 20 61 75 | 74 6f 2d 6c 6f 61 64 20 |n the au|to-load |
|00002a70| 69 6e 64 65 78 0d 23 20 | 65 78 63 65 70 74 20 74 |index.# |except t|
|00002a80| 68 6f 73 65 20 64 65 66 | 69 6e 65 64 20 69 6e 20 |hose def|ined in |
|00002a90| 74 68 69 73 20 66 69 6c | 65 2e 0d 23 0d 23 20 41 |this fil|e..#.# A|
|00002aa0| 72 67 75 6d 65 6e 74 73 | 3a 20 0d 23 20 4e 6f 6e |rguments|: .# Non|
|00002ab0| 65 2e 0d 0d 70 72 6f 63 | 20 61 75 74 6f 5f 72 65 |e...proc| auto_re|
|00002ac0| 73 65 74 20 7b 7d 20 7b | 0d 20 20 20 20 67 6c 6f |set {} {|. glo|
|00002ad0| 62 61 6c 20 61 75 74 6f | 5f 65 78 65 63 73 20 61 |bal auto|_execs a|
|00002ae0| 75 74 6f 5f 69 6e 64 65 | 78 20 61 75 74 6f 5f 6f |uto_inde|x auto_o|
|00002af0| 6c 64 70 61 74 68 0d 20 | 20 20 20 66 6f 72 65 61 |ldpath. | forea|
|00002b00| 63 68 20 70 20 5b 69 6e | 66 6f 20 70 72 6f 63 73 |ch p [in|fo procs|
|00002b10| 5d 20 7b 0d 09 69 66 20 | 7b 5b 69 6e 66 6f 20 65 |] {..if |{[info e|
|00002b20| 78 69 73 74 73 20 61 75 | 74 6f 5f 69 6e 64 65 78 |xists au|to_index|
|00002b30| 28 24 70 29 5d 20 26 26 | 20 21 5b 73 74 72 69 6e |($p)] &&| ![strin|
|00002b40| 67 20 6d 61 74 63 68 20 | 61 75 74 6f 5f 2a 20 24 |g match |auto_* $|
|00002b50| 70 5d 0d 09 09 26 26 20 | 28 5b 6c 73 65 61 72 63 |p]...&& |([lsearc|
|00002b60| 68 20 2d 65 78 61 63 74 | 20 7b 75 6e 6b 6e 6f 77 |h -exact| {unknow|
|00002b70| 6e 20 70 6b 67 5f 6d 6b | 49 6e 64 65 78 20 74 63 |n pkg_mk|Index tc|
|00002b80| 6c 50 6b 67 53 65 74 75 | 70 0d 09 09 09 74 63 6c |lPkgSetu|p....tcl|
|00002b90| 50 6b 67 55 6e 6b 6e 6f | 77 6e 7d 20 24 70 5d 20 |PkgUnkno|wn} $p] |
|00002ba0| 3c 20 30 29 7d 20 7b 0d | 09 20 20 20 20 72 65 6e |< 0)} {.|. ren|
|00002bb0| 61 6d 65 20 24 70 20 7b | 7d 0d 09 7d 0d 20 20 20 |ame $p {|}..}. |
|00002bc0| 20 7d 0d 20 20 20 20 63 | 61 74 63 68 20 7b 75 6e | }. c|atch {un|
|00002bd0| 73 65 74 20 61 75 74 6f | 5f 65 78 65 63 73 7d 0d |set auto|_execs}.|
|00002be0| 20 20 20 20 63 61 74 63 | 68 20 7b 75 6e 73 65 74 | catc|h {unset|
|00002bf0| 20 61 75 74 6f 5f 69 6e | 64 65 78 7d 0d 20 20 20 | auto_in|dex}. |
|00002c00| 20 63 61 74 63 68 20 7b | 75 6e 73 65 74 20 61 75 | catch {|unset au|
|00002c10| 74 6f 5f 6f 6c 64 70 61 | 74 68 7d 0d 7d 0d 0d 23 |to_oldpa|th}.}..#|
|00002c20| 20 61 75 74 6f 5f 6d 6b | 69 6e 64 65 78 20 2d 2d | auto_mk|index --|
|00002c30| 0d 23 20 52 65 67 65 6e | 65 72 61 74 65 20 61 20 |.# Regen|erate a |
|00002c40| 74 63 6c 49 6e 64 65 78 | 20 66 69 6c 65 20 66 72 |tclIndex| file fr|
|00002c50| 6f 6d 20 54 63 6c 20 73 | 6f 75 72 63 65 20 66 69 |om Tcl s|ource fi|
|00002c60| 6c 65 73 2e 20 20 54 61 | 6b 65 73 20 61 73 20 61 |les. Ta|kes as a|
|00002c70| 72 67 75 6d 65 6e 74 0d | 23 20 74 68 65 20 6e 61 |rgument.|# the na|
|00002c80| 6d 65 20 6f 66 20 74 68 | 65 20 64 69 72 65 63 74 |me of th|e direct|
|00002c90| 6f 72 79 20 69 6e 20 77 | 68 69 63 68 20 74 68 65 |ory in w|hich the|
|00002ca0| 20 74 63 6c 49 6e 64 65 | 78 20 66 69 6c 65 20 69 | tclInde|x file i|
|00002cb0| 73 20 74 6f 20 62 65 20 | 70 6c 61 63 65 64 2c 0d |s to be |placed,.|
|00002cc0| 23 20 66 6f 6c 6c 6f 77 | 65 64 20 62 79 20 61 6e |# follow|ed by an|
|00002cd0| 79 20 6e 75 6d 62 65 72 | 20 6f 66 20 67 6c 6f 62 |y number| of glob|
|00002ce0| 20 70 61 74 74 65 72 6e | 73 20 74 6f 20 75 73 65 | pattern|s to use|
|00002cf0| 20 69 6e 20 74 68 61 74 | 20 64 69 72 65 63 74 6f | in that| directo|
|00002d00| 72 79 20 74 6f 0d 23 20 | 6c 6f 63 61 74 65 20 61 |ry to.# |locate a|
|00002d10| 6c 6c 20 6f 66 20 74 68 | 65 20 72 65 6c 65 76 61 |ll of th|e releva|
|00002d20| 6e 74 20 66 69 6c 65 73 | 2e 0d 23 0d 23 20 41 72 |nt files|..#.# Ar|
|00002d30| 67 75 6d 65 6e 74 73 3a | 20 0d 23 20 64 69 72 20 |guments:| .# dir |
|00002d40| 2d 09 09 09 4e 61 6d 65 | 20 6f 66 20 74 68 65 20 |-...Name| of the |
|00002d50| 64 69 72 65 63 74 6f 72 | 79 20 69 6e 20 77 68 69 |director|y in whi|
|00002d60| 63 68 20 74 6f 20 63 72 | 65 61 74 65 20 61 6e 20 |ch to cr|eate an |
|00002d70| 69 6e 64 65 78 2e 0d 23 | 20 61 72 67 73 20 2d 09 |index..#| args -.|
|00002d80| 09 41 6e 79 20 6e 75 6d | 62 65 72 20 6f 66 20 61 |.Any num|ber of a|
|00002d90| 64 64 69 74 69 6f 6e 61 | 6c 20 61 72 67 75 6d 65 |dditiona|l argume|
|00002da0| 6e 74 73 20 67 69 76 69 | 6e 67 20 74 68 65 0d 23 |nts givi|ng the.#|
|00002db0| 09 09 09 6e 61 6d 65 73 | 20 6f 66 20 66 69 6c 65 |...names| of file|
|00002dc0| 73 20 77 69 74 68 69 6e | 20 64 69 72 2e 20 20 49 |s within| dir. I|
|00002dd0| 66 20 6e 6f 20 61 64 64 | 69 74 69 6f 6e 61 6c 0d |f no add|itional.|
|00002de0| 23 09 09 09 61 72 65 20 | 67 69 76 65 6e 20 61 75 |#...are |given au|
|00002df0| 74 6f 5f 6d 6b 69 6e 64 | 65 78 20 77 69 6c 6c 20 |to_mkind|ex will |
|00002e00| 6c 6f 6f 6b 20 66 6f 72 | 20 2a 2e 74 63 6c 2e 0d |look for| *.tcl..|
|00002e10| 0d 70 72 6f 63 20 61 75 | 74 6f 5f 6d 6b 69 6e 64 |.proc au|to_mkind|
|00002e20| 65 78 20 7b 64 69 72 20 | 61 72 67 73 7d 20 7b 0d |ex {dir |args} {.|
|00002e30| 20 20 20 20 67 6c 6f 62 | 61 6c 20 65 72 72 6f 72 | glob|al error|
|00002e40| 43 6f 64 65 20 65 72 72 | 6f 72 49 6e 66 6f 0d 20 |Code err|orInfo. |
|00002e50| 20 20 20 73 65 74 20 6f | 6c 64 44 69 72 20 5b 70 | set o|ldDir [p|
|00002e60| 77 64 5d 0d 20 20 20 20 | 63 64 20 24 64 69 72 0d |wd]. |cd $dir.|
|00002e70| 20 20 20 20 73 65 74 20 | 64 69 72 20 5b 70 77 64 | set |dir [pwd|
|00002e80| 5d 0d 20 20 20 20 61 70 | 70 65 6e 64 20 69 6e 64 |]. ap|pend ind|
|00002e90| 65 78 20 22 23 20 54 63 | 6c 20 61 75 74 6f 6c 6f |ex "# Tc|l autolo|
|00002ea0| 61 64 20 69 6e 64 65 78 | 20 66 69 6c 65 2c 20 76 |ad index| file, v|
|00002eb0| 65 72 73 69 6f 6e 20 32 | 2e 30 5c 6e 22 0d 20 20 |ersion 2|.0\n". |
|00002ec0| 20 20 61 70 70 65 6e 64 | 20 69 6e 64 65 78 20 22 | append| index "|
|00002ed0| 23 20 54 68 69 73 20 66 | 69 6c 65 20 69 73 20 67 |# This f|ile is g|
|00002ee0| 65 6e 65 72 61 74 65 64 | 20 62 79 20 74 68 65 20 |enerated| by the |
|00002ef0| 5c 22 61 75 74 6f 5f 6d | 6b 69 6e 64 65 78 5c 22 |\"auto_m|kindex\"|
|00002f00| 20 63 6f 6d 6d 61 6e 64 | 5c 6e 22 0d 20 20 20 20 | command|\n". |
|00002f10| 61 70 70 65 6e 64 20 69 | 6e 64 65 78 20 22 23 20 |append i|ndex "# |
|00002f20| 61 6e 64 20 73 6f 75 72 | 63 65 64 20 74 6f 20 73 |and sour|ced to s|
|00002f30| 65 74 20 75 70 20 69 6e | 64 65 78 69 6e 67 20 69 |et up in|dexing i|
|00002f40| 6e 66 6f 72 6d 61 74 69 | 6f 6e 20 66 6f 72 20 6f |nformati|on for o|
|00002f50| 6e 65 20 6f 72 5c 6e 22 | 0d 20 20 20 20 61 70 70 |ne or\n"|. app|
|00002f60| 65 6e 64 20 69 6e 64 65 | 78 20 22 23 20 6d 6f 72 |end inde|x "# mor|
|00002f70| 65 20 63 6f 6d 6d 61 6e | 64 73 2e 20 20 54 79 70 |e comman|ds. Typ|
|00002f80| 69 63 61 6c 6c 79 20 65 | 61 63 68 20 6c 69 6e 65 |ically e|ach line|
|00002f90| 20 69 73 20 61 20 63 6f | 6d 6d 61 6e 64 20 74 68 | is a co|mmand th|
|00002fa0| 61 74 5c 6e 22 0d 20 20 | 20 20 61 70 70 65 6e 64 |at\n". | append|
|00002fb0| 20 69 6e 64 65 78 20 22 | 23 20 73 65 74 73 20 61 | index "|# sets a|
|00002fc0| 6e 20 65 6c 65 6d 65 6e | 74 20 69 6e 20 74 68 65 |n elemen|t in the|
|00002fd0| 20 61 75 74 6f 5f 69 6e | 64 65 78 20 61 72 72 61 | auto_in|dex arra|
|00002fe0| 79 2c 20 77 68 65 72 65 | 20 74 68 65 5c 6e 22 0d |y, where| the\n".|
|00002ff0| 20 20 20 20 61 70 70 65 | 6e 64 20 69 6e 64 65 78 | appe|nd index|
|00003000| 20 22 23 20 65 6c 65 6d | 65 6e 74 20 6e 61 6d 65 | "# elem|ent name|
|00003010| 20 69 73 20 74 68 65 20 | 6e 61 6d 65 20 6f 66 20 | is the |name of |
|00003020| 61 20 63 6f 6d 6d 61 6e | 64 20 61 6e 64 20 74 68 |a comman|d and th|
|00003030| 65 20 76 61 6c 75 65 20 | 69 73 5c 6e 22 0d 20 20 |e value |is\n". |
|00003040| 20 20 61 70 70 65 6e 64 | 20 69 6e 64 65 78 20 22 | append| index "|
|00003050| 23 20 61 20 73 63 72 69 | 70 74 20 74 68 61 74 20 |# a scri|pt that |
|00003060| 6c 6f 61 64 73 20 74 68 | 65 20 63 6f 6d 6d 61 6e |loads th|e comman|
|00003070| 64 2e 5c 6e 5c 6e 22 0d | 20 20 20 20 69 66 20 7b |d.\n\n".| if {|
|00003080| 24 61 72 67 73 20 3d 3d | 20 22 22 7d 20 7b 0d 09 |$args ==| ""} {..|
|00003090| 73 65 74 20 61 72 67 73 | 20 2a 2e 74 63 6c 0d 20 |set args| *.tcl. |
|000030a0| 20 20 20 7d 0d 20 20 20 | 20 66 6f 72 65 61 63 68 | }. | foreach|
|000030b0| 20 66 69 6c 65 20 5b 65 | 76 61 6c 20 67 6c 6f 62 | file [e|val glob|
|000030c0| 20 24 61 72 67 73 5d 20 | 7b 0d 09 73 65 74 20 66 | $args] |{..set f|
|000030d0| 20 22 22 0d 09 73 65 74 | 20 65 72 72 6f 72 20 5b | ""..set| error [|
|000030e0| 63 61 74 63 68 20 7b 0d | 09 20 20 20 20 73 65 74 |catch {.|. set|
|000030f0| 20 66 20 5b 6f 70 65 6e | 20 24 66 69 6c 65 5d 0d | f [open| $file].|
|00003100| 09 20 20 20 20 77 68 69 | 6c 65 20 7b 5b 67 65 74 |. whi|le {[get|
|00003110| 73 20 24 66 20 6c 69 6e | 65 5d 20 3e 3d 20 30 7d |s $f lin|e] >= 0}|
|00003120| 20 7b 0d 09 09 69 66 20 | 5b 72 65 67 65 78 70 20 | {...if |[regexp |
|00003130| 7b 5e 70 72 6f 63 5b 20 | 09 5d 2b 28 5b 5e 20 09 |{^proc[ |.]+([^ .|
|00003140| 5d 2a 29 7d 20 24 6c 69 | 6e 65 20 6d 61 74 63 68 |]*)} $li|ne match|
|00003150| 20 70 72 6f 63 4e 61 6d | 65 5d 20 7b 0d 09 09 20 | procNam|e] {... |
|00003160| 20 20 20 61 70 70 65 6e | 64 20 69 6e 64 65 78 20 | appen|d index |
|00003170| 22 73 65 74 20 5b 6c 69 | 73 74 20 61 75 74 6f 5f |"set [li|st auto_|
|00003180| 69 6e 64 65 78 28 24 70 | 72 6f 63 4e 61 6d 65 29 |index($p|rocName)|
|00003190| 5d 22 0d 09 09 20 20 20 | 20 61 70 70 65 6e 64 20 |]"... | append |
|000031a0| 69 6e 64 65 78 20 22 20 | 5c 5b 6c 69 73 74 20 73 |index " |\[list s|
|000031b0| 6f 75 72 63 65 20 5c 5b | 66 69 6c 65 20 6a 6f 69 |ource \[|file joi|
|000031c0| 6e 20 5c 24 64 69 72 20 | 5b 6c 69 73 74 20 24 66 |n \$dir |[list $f|
|000031d0| 69 6c 65 5d 5c 5d 5c 5d | 5c 6e 22 0d 09 09 7d 0d |ile]\]\]|\n"...}.|
|000031e0| 09 20 20 20 20 7d 0d 09 | 20 20 20 20 63 6c 6f 73 |. }..| clos|
|000031f0| 65 20 24 66 0d 09 7d 20 | 6d 73 67 5d 0d 09 69 66 |e $f..} |msg]..if|
|00003200| 20 24 65 72 72 6f 72 20 | 7b 0d 09 20 20 20 20 73 | $error |{.. s|
|00003210| 65 74 20 63 6f 64 65 20 | 24 65 72 72 6f 72 43 6f |et code |$errorCo|
|00003220| 64 65 0d 09 20 20 20 20 | 73 65 74 20 69 6e 66 6f |de.. |set info|
|00003230| 20 24 65 72 72 6f 72 49 | 6e 66 6f 0d 09 20 20 20 | $errorI|nfo.. |
|00003240| 20 63 61 74 63 68 20 7b | 63 6c 6f 73 65 20 24 66 | catch {|close $f|
|00003250| 7d 0d 09 20 20 20 20 63 | 64 20 24 6f 6c 64 44 69 |}.. c|d $oldDi|
|00003260| 72 0d 09 20 20 20 20 65 | 72 72 6f 72 20 24 6d 73 |r.. e|rror $ms|
|00003270| 67 20 24 69 6e 66 6f 20 | 24 63 6f 64 65 0d 09 7d |g $info |$code..}|
|00003280| 0d 20 20 20 20 7d 0d 20 | 20 20 20 73 65 74 20 66 |. }. | set f|
|00003290| 20 22 22 0d 20 20 20 20 | 73 65 74 20 65 72 72 6f | "". |set erro|
|000032a0| 72 20 5b 63 61 74 63 68 | 20 7b 0d 09 73 65 74 20 |r [catch| {..set |
|000032b0| 66 20 5b 6f 70 65 6e 20 | 74 63 6c 49 6e 64 65 78 |f [open |tclIndex|
|000032c0| 20 77 5d 0d 09 70 75 74 | 73 20 24 66 20 24 69 6e | w]..put|s $f $in|
|000032d0| 64 65 78 20 6e 6f 6e 65 | 77 6c 69 6e 65 0d 09 63 |dex none|wline..c|
|000032e0| 6c 6f 73 65 20 24 66 0d | 09 63 64 20 24 6f 6c 64 |lose $f.|.cd $old|
|000032f0| 44 69 72 0d 20 20 20 20 | 7d 20 6d 73 67 5d 0d 20 |Dir. |} msg]. |
|00003300| 20 20 20 69 66 20 24 65 | 72 72 6f 72 20 7b 0d 09 | if $e|rror {..|
|00003310| 73 65 74 20 63 6f 64 65 | 20 24 65 72 72 6f 72 43 |set code| $errorC|
|00003320| 6f 64 65 0d 09 73 65 74 | 20 69 6e 66 6f 20 24 65 |ode..set| info $e|
|00003330| 72 72 6f 72 49 6e 66 6f | 0d 09 63 61 74 63 68 20 |rrorInfo|..catch |
|00003340| 7b 63 6c 6f 73 65 20 24 | 66 7d 0d 09 63 64 20 24 |{close $|f}..cd $|
|00003350| 6f 6c 64 44 69 72 0d 09 | 65 72 72 6f 72 20 24 6d |oldDir..|error $m|
|00003360| 73 67 20 24 69 6e 66 6f | 20 24 63 6f 64 65 0d 20 |sg $info| $code. |
|00003370| 20 20 20 7d 0d 7d 0d 0d | 23 20 70 6b 67 5f 6d 6b | }.}..|# pkg_mk|
|00003380| 49 6e 64 65 78 20 2d 2d | 0d 23 20 54 68 69 73 20 |Index --|.# This |
|00003390| 70 72 6f 63 65 64 75 72 | 65 20 63 72 65 61 74 65 |procedur|e create|
|000033a0| 73 20 61 20 70 61 63 6b | 61 67 65 20 69 6e 64 65 |s a pack|age inde|
|000033b0| 78 20 69 6e 20 61 20 67 | 69 76 65 6e 20 64 69 72 |x in a g|iven dir|
|000033c0| 65 63 74 6f 72 79 2e 20 | 20 54 68 65 0d 23 20 70 |ectory. | The.# p|
|000033d0| 61 63 6b 61 67 65 20 69 | 6e 64 65 78 20 63 6f 6e |ackage i|ndex con|
|000033e0| 73 69 73 74 73 20 6f 66 | 20 61 20 22 70 6b 67 49 |sists of| a "pkgI|
|000033f0| 6e 64 65 78 2e 74 63 6c | 22 20 66 69 6c 65 20 77 |ndex.tcl|" file w|
|00003400| 68 6f 73 65 20 63 6f 6e | 74 65 6e 74 73 20 61 72 |hose con|tents ar|
|00003410| 65 0d 23 20 61 20 54 63 | 6c 20 73 63 72 69 70 74 |e.# a Tc|l script|
|00003420| 20 74 68 61 74 20 73 65 | 74 73 20 75 70 20 70 61 | that se|ts up pa|
|00003430| 63 6b 61 67 65 20 69 6e | 66 6f 72 6d 61 74 69 6f |ckage in|formatio|
|00003440| 6e 20 77 69 74 68 20 22 | 70 61 63 6b 61 67 65 20 |n with "|package |
|00003450| 72 65 71 75 69 72 65 22 | 0d 23 20 63 6f 6d 6d 61 |require"|.# comma|
|00003460| 6e 64 73 2e 20 20 54 68 | 65 20 63 6f 6d 6d 61 6e |nds. Th|e comman|
|00003470| 64 73 20 64 65 73 63 72 | 69 62 65 20 61 6c 6c 20 |ds descr|ibe all |
|00003480| 6f 66 20 74 68 65 20 70 | 61 63 6b 61 67 65 73 20 |of the p|ackages |
|00003490| 64 65 66 69 6e 65 64 20 | 62 79 20 74 68 65 0d 23 |defined |by the.#|
|000034a0| 20 66 69 6c 65 73 20 67 | 69 76 65 6e 20 61 73 20 | files g|iven as |
|000034b0| 61 72 67 75 6d 65 6e 74 | 73 2e 0d 23 0d 23 20 41 |argument|s..#.# A|
|000034c0| 72 67 75 6d 65 6e 74 73 | 3a 0d 23 20 64 69 72 20 |rguments|:.# dir |
|000034d0| 2d 09 09 09 4e 61 6d 65 | 20 6f 66 20 74 68 65 20 |-...Name| of the |
|000034e0| 64 69 72 65 63 74 6f 72 | 79 20 69 6e 20 77 68 69 |director|y in whi|
|000034f0| 63 68 20 74 6f 20 63 72 | 65 61 74 65 20 74 68 65 |ch to cr|eate the|
|00003500| 20 69 6e 64 65 78 2e 0d | 23 20 61 72 67 73 20 2d | index..|# args -|
|00003510| 09 09 41 6e 79 20 6e 75 | 6d 62 65 72 20 6f 66 20 |..Any nu|mber of |
|00003520| 61 64 64 69 74 69 6f 6e | 61 6c 20 61 72 67 75 6d |addition|al argum|
|00003530| 65 6e 74 73 2c 20 65 61 | 63 68 20 67 69 76 69 6e |ents, ea|ch givin|
|00003540| 67 0d 23 09 09 09 61 20 | 67 6c 6f 62 20 70 61 74 |g.#...a |glob pat|
|00003550| 74 65 72 6e 20 74 68 61 | 74 20 6d 61 74 63 68 65 |tern tha|t matche|
|00003560| 73 20 74 68 65 20 6e 61 | 6d 65 73 20 6f 66 20 6f |s the na|mes of o|
|00003570| 6e 65 20 6f 72 0d 23 09 | 09 09 6d 6f 72 65 20 73 |ne or.#.|..more s|
|00003580| 68 61 72 65 64 20 6c 69 | 62 72 61 72 69 65 73 20 |hared li|braries |
|00003590| 6f 72 20 54 63 6c 20 73 | 63 72 69 70 74 20 66 69 |or Tcl s|cript fi|
|000035a0| 6c 65 73 20 69 6e 0d 23 | 09 09 09 64 69 72 2e 0d |les in.#|...dir..|
|000035b0| 0d 70 72 6f 63 20 70 6b | 67 5f 6d 6b 49 6e 64 65 |.proc pk|g_mkInde|
|000035c0| 78 20 7b 64 69 72 20 61 | 72 67 73 7d 20 7b 0d 20 |x {dir a|rgs} {. |
|000035d0| 20 20 20 67 6c 6f 62 61 | 6c 20 65 72 72 6f 72 43 | globa|l errorC|
|000035e0| 6f 64 65 20 65 72 72 6f | 72 49 6e 66 6f 0d 20 20 |ode erro|rInfo. |
|000035f0| 20 20 69 66 20 7b 5b 6c | 6c 65 6e 67 74 68 20 24 | if {[l|length $|
|00003600| 61 72 67 73 5d 20 3d 3d | 20 30 7d 20 7b 0d 09 72 |args] ==| 0} {..r|
|00003610| 65 74 75 72 6e 20 2d 63 | 6f 64 65 20 65 72 72 6f |eturn -c|ode erro|
|00003620| 72 20 22 77 72 6f 6e 67 | 20 23 20 61 72 67 73 3a |r "wrong| # args:|
|00003630| 20 73 68 6f 75 6c 64 20 | 62 65 5c 0d 09 09 5c 22 | should |be\...\"|
|00003640| 70 6b 67 5f 6d 6b 49 6e | 64 65 78 20 64 69 72 20 |pkg_mkIn|dex dir |
|00003650| 70 61 74 74 65 72 6e 20 | 3f 70 61 74 74 65 72 6e |pattern |?pattern|
|00003660| 20 2e 2e 2e 3f 5c 22 22 | 3b 0d 20 20 20 20 7d 0d | ...?\""|;. }.|
|00003670| 20 20 20 20 61 70 70 65 | 6e 64 20 69 6e 64 65 78 | appe|nd index|
|00003680| 20 22 23 20 54 63 6c 20 | 70 61 63 6b 61 67 65 20 | "# Tcl |package |
|00003690| 69 6e 64 65 78 20 66 69 | 6c 65 2c 20 76 65 72 73 |index fi|le, vers|
|000036a0| 69 6f 6e 20 31 2e 30 5c | 6e 22 0d 20 20 20 20 61 |ion 1.0\|n". a|
|000036b0| 70 70 65 6e 64 20 69 6e | 64 65 78 20 22 23 20 54 |ppend in|dex "# T|
|000036c0| 68 69 73 20 66 69 6c 65 | 20 69 73 20 67 65 6e 65 |his file| is gene|
|000036d0| 72 61 74 65 64 20 62 79 | 20 74 68 65 20 5c 22 70 |rated by| the \"p|
|000036e0| 6b 67 5f 6d 6b 49 6e 64 | 65 78 5c 22 20 63 6f 6d |kg_mkInd|ex\" com|
|000036f0| 6d 61 6e 64 5c 6e 22 0d | 20 20 20 20 61 70 70 65 |mand\n".| appe|
|00003700| 6e 64 20 69 6e 64 65 78 | 20 22 23 20 61 6e 64 20 |nd index| "# and |
|00003710| 73 6f 75 72 63 65 64 20 | 65 69 74 68 65 72 20 77 |sourced |either w|
|00003720| 68 65 6e 20 61 6e 20 61 | 70 70 6c 69 63 61 74 69 |hen an a|pplicati|
|00003730| 6f 6e 20 73 74 61 72 74 | 73 20 75 70 20 6f 72 5c |on start|s up or\|
|00003740| 6e 22 0d 20 20 20 20 61 | 70 70 65 6e 64 20 69 6e |n". a|ppend in|
|00003750| 64 65 78 20 22 23 20 62 | 79 20 61 20 5c 22 70 61 |dex "# b|y a \"pa|
|00003760| 63 6b 61 67 65 20 75 6e | 6b 6e 6f 77 6e 5c 22 20 |ckage un|known\" |
|00003770| 73 63 72 69 70 74 2e 20 | 20 49 74 20 69 6e 76 6f |script. | It invo|
|00003780| 6b 65 73 20 74 68 65 5c | 6e 22 0d 20 20 20 20 61 |kes the\|n". a|
|00003790| 70 70 65 6e 64 20 69 6e | 64 65 78 20 22 23 20 5c |ppend in|dex "# \|
|000037a0| 22 70 61 63 6b 61 67 65 | 20 69 66 6e 65 65 64 65 |"package| ifneede|
|000037b0| 64 5c 22 20 63 6f 6d 6d | 61 6e 64 20 74 6f 20 73 |d\" comm|and to s|
|000037c0| 65 74 20 75 70 20 70 61 | 63 6b 61 67 65 2d 72 65 |et up pa|ckage-re|
|000037d0| 6c 61 74 65 64 5c 6e 22 | 0d 20 20 20 20 61 70 70 |lated\n"|. app|
|000037e0| 65 6e 64 20 69 6e 64 65 | 78 20 22 23 20 69 6e 66 |end inde|x "# inf|
|000037f0| 6f 72 6d 61 74 69 6f 6e | 20 73 6f 20 74 68 61 74 |ormation| so that|
|00003800| 20 70 61 63 6b 61 67 65 | 73 20 77 69 6c 6c 20 62 | package|s will b|
|00003810| 65 20 6c 6f 61 64 65 64 | 20 61 75 74 6f 6d 61 74 |e loaded| automat|
|00003820| 69 63 61 6c 6c 79 5c 6e | 22 0d 20 20 20 20 61 70 |ically\n|". ap|
|00003830| 70 65 6e 64 20 69 6e 64 | 65 78 20 22 23 20 69 6e |pend ind|ex "# in|
|00003840| 20 72 65 73 70 6f 6e 73 | 65 20 74 6f 20 5c 22 70 | respons|e to \"p|
|00003850| 61 63 6b 61 67 65 20 72 | 65 71 75 69 72 65 5c 22 |ackage r|equire\"|
|00003860| 20 63 6f 6d 6d 61 6e 64 | 73 2e 20 20 57 68 65 6e | command|s. When|
|00003870| 20 74 68 69 73 5c 6e 22 | 0d 20 20 20 20 61 70 70 | this\n"|. app|
|00003880| 65 6e 64 20 69 6e 64 65 | 78 20 22 23 20 73 63 72 |end inde|x "# scr|
|00003890| 69 70 74 20 69 73 20 73 | 6f 75 72 63 65 64 2c 20 |ipt is s|ourced, |
|000038a0| 74 68 65 20 76 61 72 69 | 61 62 6c 65 20 5c 24 64 |the vari|able \$d|
|000038b0| 69 72 20 6d 75 73 74 20 | 63 6f 6e 74 61 69 6e 20 |ir must |contain |
|000038c0| 74 68 65 5c 6e 22 0d 20 | 20 20 20 61 70 70 65 6e |the\n". | appen|
|000038d0| 64 20 69 6e 64 65 78 20 | 22 23 20 66 75 6c 6c 20 |d index |"# full |
|000038e0| 70 61 74 68 20 6e 61 6d | 65 20 6f 66 20 74 68 69 |path nam|e of thi|
|000038f0| 73 20 66 69 6c 65 27 73 | 20 64 69 72 65 63 74 6f |s file's| directo|
|00003900| 72 79 2e 5c 6e 22 0d 20 | 20 20 20 73 65 74 20 6f |ry.\n". | set o|
|00003910| 6c 64 44 69 72 20 5b 70 | 77 64 5d 0d 20 20 20 20 |ldDir [p|wd]. |
|00003920| 63 64 20 24 64 69 72 0d | 20 20 20 20 66 6f 72 65 |cd $dir.| fore|
|00003930| 61 63 68 20 66 69 6c 65 | 20 5b 65 76 61 6c 20 67 |ach file| [eval g|
|00003940| 6c 6f 62 20 24 61 72 67 | 73 5d 20 7b 0d 09 23 20 |lob $arg|s] {..# |
|00003950| 46 6f 72 20 65 61 63 68 | 20 66 69 6c 65 2c 20 66 |For each| file, f|
|00003960| 69 67 75 72 65 20 6f 75 | 74 20 77 68 61 74 20 63 |igure ou|t what c|
|00003970| 6f 6d 6d 61 6e 64 73 20 | 61 6e 64 20 70 61 63 6b |ommands |and pack|
|00003980| 61 67 65 73 20 69 74 20 | 70 72 6f 76 69 64 65 73 |ages it |provides|
|00003990| 2e 0d 09 23 20 54 6f 20 | 64 6f 20 74 68 69 73 2c |...# To |do this,|
|000039a0| 20 63 72 65 61 74 65 20 | 61 20 63 68 69 6c 64 20 | create |a child |
|000039b0| 69 6e 74 65 72 70 72 65 | 74 65 72 2c 20 6c 6f 61 |interpre|ter, loa|
|000039c0| 64 20 74 68 65 20 66 69 | 6c 65 20 69 6e 74 6f 20 |d the fi|le into |
|000039d0| 74 68 65 0d 09 23 20 69 | 6e 74 65 72 70 72 65 74 |the..# i|nterpret|
|000039e0| 65 72 2c 20 61 6e 64 20 | 67 65 74 20 61 20 6c 69 |er, and |get a li|
|000039f0| 73 74 20 6f 66 20 74 68 | 65 20 6e 65 77 20 63 6f |st of th|e new co|
|00003a00| 6d 6d 61 6e 64 73 20 61 | 6e 64 20 70 61 63 6b 61 |mmands a|nd packa|
|00003a10| 67 65 73 0d 09 23 20 74 | 68 61 74 20 61 72 65 20 |ges..# t|hat are |
|00003a20| 64 65 66 69 6e 65 64 2e | 20 20 44 65 66 69 6e 65 |defined.| Define|
|00003a30| 20 61 6e 20 65 6d 70 74 | 79 20 22 70 61 63 6b 61 | an empt|y "packa|
|00003a40| 67 65 20 75 6e 6b 6e 6f | 77 6e 22 20 73 63 72 69 |ge unkno|wn" scri|
|00003a50| 70 74 20 73 6f 0d 09 23 | 20 74 68 61 74 20 74 68 |pt so..#| that th|
|00003a60| 65 72 65 20 61 72 65 20 | 6e 6f 20 72 65 63 75 72 |ere are |no recur|
|00003a70| 73 69 76 65 20 70 61 63 | 6b 61 67 65 20 69 6e 63 |sive pac|kage inc|
|00003a80| 6c 75 73 69 6f 6e 73 2e | 0d 0d 09 73 65 74 20 63 |lusions.|...set c|
|00003a90| 20 5b 69 6e 74 65 72 70 | 20 63 72 65 61 74 65 5d | [interp| create]|
|00003aa0| 0d 0d 09 23 20 49 66 20 | 54 6b 20 69 73 20 6c 6f |...# If |Tk is lo|
|00003ab0| 61 64 65 64 20 69 6e 20 | 74 68 65 20 70 61 72 65 |aded in |the pare|
|00003ac0| 6e 74 20 69 6e 74 65 72 | 70 72 65 74 65 72 2c 20 |nt inter|preter, |
|00003ad0| 6c 6f 61 64 20 69 74 20 | 69 6e 74 6f 20 74 68 65 |load it |into the|
|00003ae0| 0d 09 23 20 63 68 69 6c | 64 20 61 6c 73 6f 2c 20 |..# chil|d also, |
|00003af0| 69 6e 20 63 61 73 65 20 | 74 68 65 20 65 78 74 65 |in case |the exte|
|00003b00| 6e 73 69 6f 6e 20 64 65 | 70 65 6e 64 73 20 6f 6e |nsion de|pends on|
|00003b10| 20 69 74 2e 0d 0d 09 66 | 6f 72 65 61 63 68 20 70 | it....f|oreach p|
|00003b20| 6b 67 20 5b 69 6e 66 6f | 20 6c 6f 61 64 65 64 5d |kg [info| loaded]|
|00003b30| 20 7b 0d 09 20 20 20 20 | 69 66 20 7b 5b 6c 69 6e | {.. |if {[lin|
|00003b40| 64 65 78 20 24 70 6b 67 | 20 31 5d 20 3d 3d 20 22 |dex $pkg| 1] == "|
|00003b50| 54 6b 22 7d 20 7b 0d 09 | 09 24 63 20 65 76 61 6c |Tk"} {..|.$c eval|
|00003b60| 20 7b 73 65 74 20 61 72 | 67 76 20 7b 2d 67 65 6f | {set ar|gv {-geo|
|00003b70| 6d 65 74 72 79 20 2b 30 | 2b 30 7d 7d 0d 09 09 6c |metry +0|+0}}...l|
|00003b80| 6f 61 64 20 5b 6c 69 6e | 64 65 78 20 24 70 6b 67 |oad [lin|dex $pkg|
|00003b90| 20 30 5d 20 54 6b 20 24 | 63 0d 09 09 62 72 65 61 | 0] Tk $|c...brea|
|00003ba0| 6b 0d 09 20 20 20 20 7d | 0d 09 7d 0d 09 24 63 20 |k.. }|..}..$c |
|00003bb0| 65 76 61 6c 20 5b 6c 69 | 73 74 20 73 65 74 20 66 |eval [li|st set f|
|00003bc0| 69 6c 65 20 24 66 69 6c | 65 5d 0d 09 69 66 20 5b |ile $fil|e]..if [|
|00003bd0| 63 61 74 63 68 20 7b 0d | 09 20 20 20 20 24 63 20 |catch {.|. $c |
|00003be0| 65 76 61 6c 20 7b 0d 09 | 09 70 72 6f 63 20 64 75 |eval {..|.proc du|
|00003bf0| 6d 6d 79 20 61 72 67 73 | 20 7b 7d 0d 09 09 72 65 |mmy args| {}...re|
|00003c00| 6e 61 6d 65 20 70 61 63 | 6b 61 67 65 20 70 61 63 |name pac|kage pac|
|00003c10| 6b 61 67 65 2d 6f 72 69 | 67 0d 09 09 70 72 6f 63 |kage-ori|g...proc|
|00003c20| 20 70 61 63 6b 61 67 65 | 20 7b 77 68 61 74 20 61 | package| {what a|
|00003c30| 72 67 73 7d 20 7b 0d 09 | 09 20 20 20 20 73 77 69 |rgs} {..|. swi|
|00003c40| 74 63 68 20 2d 2d 20 24 | 77 68 61 74 20 7b 0d 09 |tch -- $|what {..|
|00003c50| 09 09 72 65 71 75 69 72 | 65 20 7b 20 72 65 74 75 |..requir|e { retu|
|00003c60| 72 6e 20 3b 20 23 20 69 | 67 6e 6f 72 65 20 74 72 |rn ; # i|gnore tr|
|00003c70| 61 6e 73 69 74 69 76 65 | 20 72 65 71 75 69 72 65 |ansitive| require|
|00003c80| 73 20 7d 0d 09 09 09 64 | 65 66 61 75 6c 74 20 7b |s }....d|efault {|
|00003c90| 20 65 76 61 6c 20 70 61 | 63 6b 61 67 65 2d 6f 72 | eval pa|ckage-or|
|00003ca0| 69 67 20 7b 24 77 68 61 | 74 7d 20 24 61 72 67 73 |ig {$wha|t} $args|
|00003cb0| 20 7d 0d 09 09 20 20 20 | 20 7d 0d 09 09 7d 0d 09 | }... | }...}..|
|00003cc0| 09 70 61 63 6b 61 67 65 | 20 75 6e 6b 6e 6f 77 6e |.package| unknown|
|00003cd0| 20 64 75 6d 6d 79 0d 09 | 09 73 65 74 20 6f 72 69 | dummy..|.set ori|
|00003ce0| 67 43 6d 64 73 20 5b 69 | 6e 66 6f 20 63 6f 6d 6d |gCmds [i|nfo comm|
|00003cf0| 61 6e 64 73 5d 0d 09 09 | 73 65 74 20 64 69 72 20 |ands]...|set dir |
|00003d00| 22 22 09 09 3b 23 20 69 | 6e 20 63 61 73 65 20 66 |""..;# i|n case f|
|00003d10| 69 6c 65 20 69 73 20 70 | 6b 67 49 6e 64 65 78 2e |ile is p|kgIndex.|
|00003d20| 74 63 6c 0d 09 09 73 65 | 74 20 70 6b 67 73 20 22 |tcl...se|t pkgs "|
|00003d30| 22 0d 0d 09 09 23 20 54 | 72 79 20 74 6f 20 6c 6f |"....# T|ry to lo|
|00003d40| 61 64 20 74 68 65 20 66 | 69 6c 65 20 69 66 20 69 |ad the f|ile if i|
|00003d50| 74 20 68 61 73 20 74 68 | 65 20 73 68 61 72 65 64 |t has th|e shared|
|00003d60| 20 6c 69 62 72 61 72 79 | 20 65 78 74 65 6e 73 69 | library| extensi|
|00003d70| 6f 6e 2c 0d 09 09 23 20 | 6f 74 68 65 72 77 69 73 |on,...# |otherwis|
|00003d80| 65 20 73 6f 75 72 63 65 | 20 69 74 2e 20 20 49 74 |e source| it. It|
|00003d90| 27 73 20 69 6d 70 6f 72 | 74 61 6e 74 20 6e 6f 74 |'s impor|tant not|
|00003da0| 20 74 6f 20 74 72 79 20 | 74 6f 20 6c 6f 61 64 0d | to try |to load.|
|00003db0| 09 09 23 20 66 69 6c 65 | 73 20 74 68 61 74 20 61 |..# file|s that a|
|00003dc0| 72 65 6e 27 74 20 73 68 | 61 72 65 64 20 6c 69 62 |ren't sh|ared lib|
|00003dd0| 72 61 72 69 65 73 2c 20 | 62 65 63 61 75 73 65 20 |raries, |because |
|00003de0| 6f 6e 20 73 6f 6d 65 20 | 73 79 73 74 65 6d 73 0d |on some |systems.|
|00003df0| 09 09 23 20 28 6c 69 6b | 65 20 53 75 6e 4f 53 29 |..# (lik|e SunOS)|
|00003e00| 20 74 68 65 20 6c 6f 61 | 64 65 72 20 77 69 6c 6c | the loa|der will|
|00003e10| 20 61 62 6f 72 74 20 74 | 68 65 20 77 68 6f 6c 65 | abort t|he whole|
|00003e20| 20 61 70 70 6c 69 63 61 | 74 69 6f 6e 0d 09 09 23 | applica|tion...#|
|00003e30| 20 77 68 65 6e 20 69 74 | 20 67 65 74 73 20 61 6e | when it| gets an|
|00003e40| 20 65 72 72 6f 72 2e 0d | 0d 09 09 69 66 20 7b 5b | error..|...if {[|
|00003e50| 73 74 72 69 6e 67 20 63 | 6f 6d 70 61 72 65 20 5b |string c|ompare [|
|00003e60| 66 69 6c 65 20 65 78 74 | 65 6e 73 69 6f 6e 20 24 |file ext|ension $|
|00003e70| 66 69 6c 65 5d 20 5c 0d | 09 09 09 5b 69 6e 66 6f |file] \.|...[info|
|00003e80| 20 73 68 61 72 65 64 6c | 69 62 65 78 74 65 6e 73 | sharedl|ibextens|
|00003e90| 69 6f 6e 5d 5d 20 3d 3d | 20 30 7d 20 7b 0d 0d 09 |ion]] ==| 0} {...|
|00003ea0| 09 20 20 20 20 23 20 54 | 68 65 20 22 66 69 6c 65 |. # T|he "file|
|00003eb0| 20 6a 6f 69 6e 20 2e 22 | 20 63 6f 6d 6d 61 6e 64 | join ."| command|
|00003ec0| 20 62 65 6c 6f 77 20 69 | 73 20 6e 65 63 65 73 73 | below i|s necess|
|00003ed0| 61 72 79 2e 20 20 57 69 | 74 68 6f 75 74 0d 09 09 |ary. Wi|thout...|
|00003ee0| 20 20 20 20 23 20 69 74 | 2c 20 69 66 20 74 68 65 | # it|, if the|
|00003ef0| 20 66 69 6c 65 20 6e 61 | 6d 65 20 68 61 73 20 6e | file na|me has n|
|00003f00| 6f 20 5c 27 73 20 61 6e | 64 20 77 65 27 72 65 20 |o \'s an|d we're |
|00003f10| 6f 6e 20 55 4e 49 58 2c | 20 74 68 65 0d 09 09 20 |on UNIX,| the... |
|00003f20| 20 20 20 23 20 6c 6f 61 | 64 20 63 6f 6d 6d 61 6e | # loa|d comman|
|00003f30| 64 20 77 69 6c 6c 20 69 | 6e 76 6f 6b 65 20 74 68 |d will i|nvoke th|
|00003f40| 65 20 4c 44 5f 4c 49 42 | 52 41 52 59 5f 50 41 54 |e LD_LIB|RARY_PAT|
|00003f50| 48 20 73 65 61 72 63 68 | 0d 09 09 20 20 20 20 23 |H search|... #|
|00003f60| 20 6d 65 63 68 61 6e 69 | 73 6d 2c 20 77 68 69 63 | mechani|sm, whic|
|00003f70| 68 20 63 6f 75 6c 64 20 | 63 61 75 73 65 20 74 68 |h could |cause th|
|00003f80| 65 20 77 72 6f 6e 67 20 | 66 69 6c 65 20 74 6f 20 |e wrong |file to |
|00003f90| 62 65 20 75 73 65 64 2e | 0d 0d 09 09 20 20 20 20 |be used.|.... |
|00003fa0| 6c 6f 61 64 20 5b 66 69 | 6c 65 20 6a 6f 69 6e 20 |load [fi|le join |
|00003fb0| 2e 20 24 66 69 6c 65 5d | 0d 09 09 20 20 20 20 73 |. $file]|... s|
|00003fc0| 65 74 20 74 79 70 65 20 | 6c 6f 61 64 0d 09 09 7d |et type |load...}|
|00003fd0| 20 65 6c 73 65 20 7b 0d | 09 09 20 20 20 20 73 6f | else {.|.. so|
|00003fe0| 75 72 63 65 20 24 66 69 | 6c 65 0d 09 09 20 20 20 |urce $fi|le... |
|00003ff0| 20 73 65 74 20 74 79 70 | 65 20 73 6f 75 72 63 65 | set typ|e source|
|00004000| 0d 09 09 7d 0d 09 09 66 | 6f 72 65 61 63 68 20 6e |...}...f|oreach n|
|00004010| 73 20 5b 6e 61 6d 65 73 | 70 61 63 65 20 63 68 69 |s [names|pace chi|
|00004020| 6c 64 72 65 6e 5d 20 7b | 0d 09 09 20 20 20 20 6e |ldren] {|... n|
|00004030| 61 6d 65 73 70 61 63 65 | 20 69 6d 70 6f 72 74 20 |amespace| import |
|00004040| 24 7b 6e 73 7d 3a 3a 2a | 0d 09 09 7d 0d 09 09 66 |${ns}::*|...}...f|
|00004050| 6f 72 65 61 63 68 20 69 | 20 5b 69 6e 66 6f 20 63 |oreach i| [info c|
|00004060| 6f 6d 6d 61 6e 64 73 5d | 20 7b 0d 09 09 20 20 20 |ommands]| {... |
|00004070| 20 73 65 74 20 63 6d 64 | 73 28 24 69 29 20 31 0d | set cmd|s($i) 1.|
|00004080| 09 09 7d 0d 09 09 66 6f | 72 65 61 63 68 20 69 20 |..}...fo|reach i |
|00004090| 24 6f 72 69 67 43 6d 64 | 73 20 7b 0d 09 09 20 20 |$origCmd|s {... |
|000040a0| 20 20 63 61 74 63 68 20 | 7b 75 6e 73 65 74 20 63 | catch |{unset c|
|000040b0| 6d 64 73 28 24 69 29 7d | 0d 0d 09 09 7d 0d 09 09 |mds($i)}|....}...|
|000040c0| 66 6f 72 65 61 63 68 20 | 69 20 5b 61 72 72 61 79 |foreach |i [array|
|000040d0| 20 6e 61 6d 65 73 20 63 | 6d 64 73 5d 20 7b 0d 09 | names c|mds] {..|
|000040e0| 09 20 20 20 20 23 20 72 | 65 76 65 72 73 65 20 65 |. # r|everse e|
|000040f0| 6e 67 69 6e 65 65 72 20 | 77 68 69 63 68 20 6e 61 |ngineer |which na|
|00004100| 6d 65 73 70 61 63 65 20 | 61 20 63 6f 6d 6d 61 6e |mespace |a comman|
|00004110| 64 20 63 6f 6d 65 73 20 | 66 72 6f 6d 0d 09 09 20 |d comes |from... |
|00004120| 20 20 20 73 65 74 20 61 | 62 73 6f 6c 75 74 65 20 | set a|bsolute |
|00004130| 5b 6e 61 6d 65 73 70 61 | 63 65 20 6f 72 69 67 69 |[namespa|ce origi|
|00004140| 6e 20 24 69 5d 0d 09 09 | 20 20 20 20 69 66 20 7b |n $i]...| if {|
|00004150| 5b 73 74 72 69 6e 67 20 | 63 6f 6d 70 61 72 65 20 |[string |compare |
|00004160| 3a 3a 24 69 20 24 61 62 | 73 6f 6c 75 74 65 5d 20 |::$i $ab|solute] |
|00004170| 21 3d 20 30 7d 20 7b 0d | 09 09 09 73 65 74 20 63 |!= 0} {.|...set c|
|00004180| 6d 64 73 28 24 61 62 73 | 6f 6c 75 74 65 29 20 31 |mds($abs|olute) 1|
|00004190| 0d 09 09 09 75 6e 73 65 | 74 20 63 6d 64 73 28 24 |....unse|t cmds($|
|000041a0| 69 29 0d 09 09 20 20 20 | 20 7d 0d 09 09 7d 0d 09 |i)... | }...}..|
|000041b0| 09 66 6f 72 65 61 63 68 | 20 69 20 5b 70 61 63 6b |.foreach| i [pack|
|000041c0| 61 67 65 20 6e 61 6d 65 | 73 5d 20 7b 0d 09 09 20 |age name|s] {... |
|000041d0| 20 20 20 69 66 20 7b 28 | 5b 73 74 72 69 6e 67 20 | if {(|[string |
|000041e0| 63 6f 6d 70 61 72 65 20 | 5b 70 61 63 6b 61 67 65 |compare |[package|
|000041f0| 20 70 72 6f 76 69 64 65 | 20 24 69 5d 20 22 22 5d | provide| $i] ""]|
|00004200| 20 21 3d 20 30 29 0d 09 | 09 09 20 20 20 20 26 26 | != 0)..|.. &&|
|00004210| 20 28 5b 73 74 72 69 6e | 67 20 63 6f 6d 70 61 72 | ([strin|g compar|
|00004220| 65 20 24 69 20 54 63 6c | 5d 20 21 3d 20 30 29 0d |e $i Tcl|] != 0).|
|00004230| 09 09 09 20 20 20 20 26 | 26 20 28 5b 73 74 72 69 |... &|& ([stri|
|00004240| 6e 67 20 63 6f 6d 70 61 | 72 65 20 24 69 20 54 6b |ng compa|re $i Tk|
|00004250| 5d 20 21 3d 20 30 29 7d | 20 7b 0d 09 09 09 6c 61 |] != 0)}| {....la|
|00004260| 70 70 65 6e 64 20 70 6b | 67 73 20 5b 6c 69 73 74 |ppend pk|gs [list|
|00004270| 20 24 69 20 5b 70 61 63 | 6b 61 67 65 20 70 72 6f | $i [pac|kage pro|
|00004280| 76 69 64 65 20 24 69 5d | 5d 0d 09 09 20 20 20 20 |vide $i]|]... |
|00004290| 7d 0d 09 09 7d 0d 09 20 | 20 20 20 7d 0d 09 7d 20 |}...}.. | }..} |
|000042a0| 6d 73 67 5d 20 7b 0d 09 | 20 20 20 20 74 63 6c 4c |msg] {..| tclL|
|000042b0| 6f 67 20 22 65 72 72 6f | 72 20 77 68 69 6c 65 20 |og "erro|r while |
|000042c0| 6c 6f 61 64 69 6e 67 20 | 6f 72 20 73 6f 75 72 63 |loading |or sourc|
|000042d0| 69 6e 67 20 24 66 69 6c | 65 3a 20 24 6d 73 67 22 |ing $fil|e: $msg"|
|000042e0| 0d 09 7d 0d 09 66 6f 72 | 65 61 63 68 20 70 6b 67 |..}..for|each pkg|
|000042f0| 20 5b 24 63 20 65 76 61 | 6c 20 73 65 74 20 70 6b | [$c eva|l set pk|
|00004300| 67 73 5d 20 7b 0d 09 20 | 20 20 20 6c 61 70 70 65 |gs] {.. | lappe|
|00004310| 6e 64 20 66 69 6c 65 73 | 28 24 70 6b 67 29 20 5b |nd files|($pkg) [|
|00004320| 6c 69 73 74 20 24 66 69 | 6c 65 20 5b 24 63 20 65 |list $fi|le [$c e|
|00004330| 76 61 6c 20 73 65 74 20 | 74 79 70 65 5d 20 5c 0d |val set |type] \.|
|00004340| 09 09 20 20 20 20 5b 6c | 73 6f 72 74 20 5b 24 63 |.. [l|sort [$c|
|00004350| 20 65 76 61 6c 20 61 72 | 72 61 79 20 6e 61 6d 65 | eval ar|ray name|
|00004360| 73 20 63 6d 64 73 5d 5d | 5d 0d 09 7d 0d 09 69 6e |s cmds]]|]..}..in|
|00004370| 74 65 72 70 20 64 65 6c | 65 74 65 20 24 63 0d 20 |terp del|ete $c. |
|00004380| 20 20 20 7d 0d 20 20 20 | 20 66 6f 72 65 61 63 68 | }. | foreach|
|00004390| 20 70 6b 67 20 5b 6c 73 | 6f 72 74 20 5b 61 72 72 | pkg [ls|ort [arr|
|000043a0| 61 79 20 6e 61 6d 65 73 | 20 66 69 6c 65 73 5d 5d |ay names| files]]|
|000043b0| 20 7b 0d 09 61 70 70 65 | 6e 64 20 69 6e 64 65 78 | {..appe|nd index|
|000043c0| 20 22 5c 6e 70 61 63 6b | 61 67 65 20 69 66 6e 65 | "\npack|age ifne|
|000043d0| 65 64 65 64 20 24 70 6b | 67 5c 0d 09 09 5c 5b 6c |eded $pk|g\...\[l|
|000043e0| 69 73 74 20 74 63 6c 50 | 6b 67 53 65 74 75 70 20 |ist tclP|kgSetup |
|000043f0| 5c 24 64 69 72 20 5b 6c | 72 61 6e 67 65 20 24 70 |\$dir [l|range $p|
|00004400| 6b 67 20 30 20 30 5d 20 | 5b 6c 72 61 6e 67 65 20 |kg 0 0] |[lrange |
|00004410| 24 70 6b 67 20 31 20 31 | 5d 5c 0d 09 09 5b 6c 69 |$pkg 1 1|]\...[li|
|00004420| 73 74 20 24 66 69 6c 65 | 73 28 24 70 6b 67 29 5d |st $file|s($pkg)]|
|00004430| 5c 5d 22 0d 20 20 20 20 | 7d 0d 20 20 20 20 73 65 |\]". |}. se|
|00004440| 74 20 66 20 5b 6f 70 65 | 6e 20 70 6b 67 49 6e 64 |t f [ope|n pkgInd|
|00004450| 65 78 2e 74 63 6c 20 77 | 5d 0d 20 20 20 20 70 75 |ex.tcl w|]. pu|
|00004460| 74 73 20 24 66 20 24 69 | 6e 64 65 78 0d 20 20 20 |ts $f $i|ndex. |
|00004470| 20 63 6c 6f 73 65 20 24 | 66 0d 20 20 20 20 63 64 | close $|f. cd|
|00004480| 20 24 6f 6c 64 44 69 72 | 0d 7d 0d 0d 23 20 74 63 | $oldDir|.}..# tc|
|00004490| 6c 50 6b 67 53 65 74 75 | 70 20 2d 2d 0d 23 20 54 |lPkgSetu|p --.# T|
|000044a0| 68 69 73 20 69 73 20 61 | 20 75 74 69 6c 69 74 79 |his is a| utility|
|000044b0| 20 70 72 6f 63 65 64 75 | 72 65 20 75 73 65 20 62 | procedu|re use b|
|000044c0| 79 20 70 6b 67 49 6e 64 | 65 78 2e 74 63 6c 20 66 |y pkgInd|ex.tcl f|
|000044d0| 69 6c 65 73 2e 20 20 49 | 74 20 69 73 20 69 6e 76 |iles. I|t is inv|
|000044e0| 6f 6b 65 64 0d 23 20 61 | 73 20 70 61 72 74 20 6f |oked.# a|s part o|
|000044f0| 66 20 61 20 22 70 61 63 | 6b 61 67 65 20 69 66 6e |f a "pac|kage ifn|
|00004500| 65 65 64 65 64 22 20 73 | 63 72 69 70 74 2e 20 20 |eeded" s|cript. |
|00004510| 49 74 20 63 61 6c 6c 73 | 20 22 70 61 63 6b 61 67 |It calls| "packag|
|00004520| 65 20 70 72 6f 76 69 64 | 65 22 0d 23 20 74 6f 20 |e provid|e".# to |
|00004530| 69 6e 64 69 63 61 74 65 | 20 74 68 61 74 20 61 20 |indicate| that a |
|00004540| 70 61 63 6b 61 67 65 20 | 69 73 20 61 76 61 69 6c |package |is avail|
|00004550| 61 62 6c 65 2c 20 74 68 | 65 6e 20 73 65 74 73 20 |able, th|en sets |
|00004560| 65 6e 74 72 69 65 73 20 | 69 6e 20 74 68 65 0d 23 |entries |in the.#|
|00004570| 20 61 75 74 6f 5f 69 6e | 64 65 78 20 61 72 72 61 | auto_in|dex arra|
|00004580| 79 20 73 6f 20 74 68 61 | 74 20 74 68 65 20 70 61 |y so tha|t the pa|
|00004590| 63 6b 61 67 65 27 73 20 | 66 69 6c 65 73 20 77 69 |ckage's |files wi|
|000045a0| 6c 6c 20 62 65 20 61 75 | 74 6f 2d 6c 6f 61 64 65 |ll be au|to-loade|
|000045b0| 64 20 77 68 65 6e 0d 23 | 20 74 68 65 20 63 6f 6d |d when.#| the com|
|000045c0| 6d 61 6e 64 73 20 61 72 | 65 20 75 73 65 64 2e 0d |mands ar|e used..|
|000045d0| 23 0d 23 20 41 72 67 75 | 6d 65 6e 74 73 3a 0d 23 |#.# Argu|ments:.#|
|000045e0| 20 64 69 72 20 2d 09 09 | 09 44 69 72 65 63 74 6f | dir -..|.Directo|
|000045f0| 72 79 20 63 6f 6e 74 61 | 69 6e 69 6e 67 20 61 6c |ry conta|ining al|
|00004600| 6c 20 74 68 65 20 66 69 | 6c 65 73 20 66 6f 72 20 |l the fi|les for |
|00004610| 74 68 69 73 20 70 61 63 | 6b 61 67 65 2e 0d 23 20 |this pac|kage..# |
|00004620| 70 6b 67 20 2d 09 09 09 | 4e 61 6d 65 20 6f 66 20 |pkg -...|Name of |
|00004630| 74 68 65 20 70 61 63 6b | 61 67 65 20 28 6e 6f 20 |the pack|age (no |
|00004640| 76 65 72 73 69 6f 6e 20 | 6e 75 6d 62 65 72 29 2e |version |number).|
|00004650| 0d 23 20 76 65 72 73 69 | 6f 6e 20 2d 09 09 56 65 |.# versi|on -..Ve|
|00004660| 72 73 69 6f 6e 20 6e 75 | 6d 62 65 72 20 66 6f 72 |rsion nu|mber for|
|00004670| 20 74 68 65 20 70 61 63 | 6b 61 67 65 2c 20 73 75 | the pac|kage, su|
|00004680| 63 68 20 61 73 20 32 2e | 31 2e 33 2e 0d 23 20 66 |ch as 2.|1.3..# f|
|00004690| 69 6c 65 73 20 2d 09 09 | 4c 69 73 74 20 6f 66 20 |iles -..|List of |
|000046a0| 66 69 6c 65 73 20 74 68 | 61 74 20 63 6f 6e 73 74 |files th|at const|
|000046b0| 69 74 75 74 65 20 74 68 | 65 20 70 61 63 6b 61 67 |itute th|e packag|
|000046c0| 65 2e 20 20 45 61 63 68 | 0d 23 09 09 09 65 6c 65 |e. Each|.#...ele|
|000046d0| 6d 65 6e 74 20 69 73 20 | 61 20 73 75 62 2d 6c 69 |ment is |a sub-li|
|000046e0| 73 74 20 77 69 74 68 20 | 74 68 72 65 65 20 65 6c |st with |three el|
|000046f0| 65 6d 65 6e 74 73 2e 20 | 20 54 68 65 20 66 69 72 |ements. | The fir|
|00004700| 73 74 0d 23 09 09 09 69 | 73 20 74 68 65 20 6e 61 |st.#...i|s the na|
|00004710| 6d 65 20 6f 66 20 61 20 | 66 69 6c 65 20 72 65 6c |me of a |file rel|
|00004720| 61 74 69 76 65 20 74 6f | 20 24 64 69 72 2c 20 74 |ative to| $dir, t|
|00004730| 68 65 20 73 65 63 6f 6e | 64 20 69 73 0d 23 09 09 |he secon|d is.#..|
|00004740| 09 22 6c 6f 61 64 22 20 | 6f 72 20 22 73 6f 75 72 |."load" |or "sour|
|00004750| 63 65 22 2c 20 69 6e 64 | 69 63 61 74 69 6e 67 20 |ce", ind|icating |
|00004760| 77 68 65 74 68 65 72 20 | 74 68 65 20 66 69 6c 65 |whether |the file|
|00004770| 20 69 73 20 61 0d 23 09 | 09 09 6c 6f 61 64 61 62 | is a.#.|..loadab|
|00004780| 6c 65 20 62 69 6e 61 72 | 79 20 6f 72 20 61 20 73 |le binar|y or a s|
|00004790| 63 72 69 70 74 20 74 6f | 20 73 6f 75 72 63 65 2c |cript to| source,|
|000047a0| 20 61 6e 64 20 74 68 65 | 20 74 68 69 72 64 0d 23 | and the| third.#|
|000047b0| 09 09 09 69 73 20 61 20 | 6c 69 73 74 20 6f 66 20 |...is a |list of |
|000047c0| 63 6f 6d 6d 61 6e 64 73 | 20 64 65 66 69 6e 65 64 |commands| defined|
|000047d0| 20 62 79 20 74 68 69 73 | 20 66 69 6c 65 2e 0d 0d | by this| file...|
|000047e0| 70 72 6f 63 20 74 63 6c | 50 6b 67 53 65 74 75 70 |proc tcl|PkgSetup|
|000047f0| 20 7b 64 69 72 20 70 6b | 67 20 76 65 72 73 69 6f | {dir pk|g versio|
|00004800| 6e 20 66 69 6c 65 73 7d | 20 7b 0d 20 20 20 20 67 |n files}| {. g|
|00004810| 6c 6f 62 61 6c 20 61 75 | 74 6f 5f 69 6e 64 65 78 |lobal au|to_index|
|00004820| 0d 0d 20 20 20 20 70 61 | 63 6b 61 67 65 20 70 72 |.. pa|ckage pr|
|00004830| 6f 76 69 64 65 20 24 70 | 6b 67 20 24 76 65 72 73 |ovide $p|kg $vers|
|00004840| 69 6f 6e 0d 20 20 20 20 | 66 6f 72 65 61 63 68 20 |ion. |foreach |
|00004850| 66 69 6c 65 49 6e 66 6f | 20 24 66 69 6c 65 73 20 |fileInfo| $files |
|00004860| 7b 0d 09 73 65 74 20 66 | 20 5b 6c 69 6e 64 65 78 |{..set f| [lindex|
|00004870| 20 24 66 69 6c 65 49 6e | 66 6f 20 30 5d 0d 09 73 | $fileIn|fo 0]..s|
|00004880| 65 74 20 74 79 70 65 20 | 5b 6c 69 6e 64 65 78 20 |et type |[lindex |
|00004890| 24 66 69 6c 65 49 6e 66 | 6f 20 31 5d 0d 09 66 6f |$fileInf|o 1]..fo|
|000048a0| 72 65 61 63 68 20 63 6d | 64 20 5b 6c 69 6e 64 65 |reach cm|d [linde|
|000048b0| 78 20 24 66 69 6c 65 49 | 6e 66 6f 20 32 5d 20 7b |x $fileI|nfo 2] {|
|000048c0| 0d 09 20 20 20 20 69 66 | 20 7b 24 74 79 70 65 20 |.. if| {$type |
|000048d0| 3d 3d 20 22 6c 6f 61 64 | 22 7d 20 7b 0d 09 09 73 |== "load|"} {...s|
|000048e0| 65 74 20 61 75 74 6f 5f | 69 6e 64 65 78 28 24 63 |et auto_|index($c|
|000048f0| 6d 64 29 20 5b 6c 69 73 | 74 20 6c 6f 61 64 20 5b |md) [lis|t load [|
|00004900| 66 69 6c 65 20 6a 6f 69 | 6e 20 24 64 69 72 20 24 |file joi|n $dir $|
|00004910| 66 5d 20 24 70 6b 67 5d | 0d 09 20 20 20 20 7d 20 |f] $pkg]|.. } |
|00004920| 65 6c 73 65 20 7b 0d 09 | 09 73 65 74 20 61 75 74 |else {..|.set aut|
|00004930| 6f 5f 69 6e 64 65 78 28 | 24 63 6d 64 29 20 5b 6c |o_index(|$cmd) [l|
|00004940| 69 73 74 20 73 6f 75 72 | 63 65 20 5b 66 69 6c 65 |ist sour|ce [file|
|00004950| 20 6a 6f 69 6e 20 24 64 | 69 72 20 24 66 5d 5d 0d | join $d|ir $f]].|
|00004960| 09 20 20 20 20 7d 20 0d | 09 7d 0d 20 20 20 20 7d |. } .|.}. }|
|00004970| 0d 7d 0d 0d 23 20 74 63 | 6c 4d 61 63 50 6b 67 53 |.}..# tc|lMacPkgS|
|00004980| 65 61 72 63 68 20 2d 2d | 0d 23 20 54 68 65 20 70 |earch --|.# The p|
|00004990| 72 6f 63 65 64 75 72 65 | 20 69 73 20 75 73 65 64 |rocedure| is used|
|000049a0| 20 6f 6e 20 74 68 65 20 | 4d 61 63 69 6e 74 6f 73 | on the |Macintos|
|000049b0| 68 20 74 6f 20 73 65 61 | 72 63 68 20 61 20 67 69 |h to sea|rch a gi|
|000049c0| 76 65 6e 20 64 69 72 65 | 63 74 6f 72 79 20 66 6f |ven dire|ctory fo|
|000049d0| 72 20 66 69 6c 65 73 0d | 23 20 77 69 74 68 20 61 |r files.|# with a|
|000049e0| 20 54 45 58 54 20 72 65 | 73 6f 75 72 63 65 20 6e | TEXT re|source n|
|000049f0| 61 6d 65 64 20 22 70 6b | 67 49 6e 64 65 78 22 2e |amed "pk|gIndex".|
|00004a00| 20 20 49 66 20 69 74 20 | 65 78 69 73 74 73 20 69 | If it |exists i|
|00004a10| 74 20 69 73 20 73 6f 75 | 72 63 65 64 20 69 6e 20 |t is sou|rced in |
|00004a20| 74 6f 20 74 68 65 0d 23 | 20 69 6e 74 65 72 70 72 |to the.#| interpr|
|00004a30| 65 74 65 72 20 74 6f 20 | 73 65 74 75 70 20 74 68 |eter to |setup th|
|00004a40| 65 20 70 61 63 6b 61 67 | 65 20 64 61 74 61 62 61 |e packag|e databa|
|00004a50| 73 65 2e 0d 0d 70 72 6f | 63 20 74 63 6c 4d 61 63 |se...pro|c tclMac|
|00004a60| 50 6b 67 53 65 61 72 63 | 68 20 7b 64 69 72 7d 20 |PkgSearc|h {dir} |
|00004a70| 7b 0d 20 20 20 20 66 6f | 72 65 61 63 68 20 78 20 |{. fo|reach x |
|00004a80| 5b 67 6c 6f 62 20 2d 6e | 6f 63 6f 6d 70 6c 61 69 |[glob -n|ocomplai|
|00004a90| 6e 20 5b 66 69 6c 65 20 | 6a 6f 69 6e 20 24 64 69 |n [file |join $di|
|00004aa0| 72 20 2a 2e 73 68 6c 62 | 5d 5d 20 7b 0d 09 69 66 |r *.shlb|]] {..if|
|00004ab0| 20 5b 66 69 6c 65 20 69 | 73 66 69 6c 65 20 24 78 | [file i|sfile $x|
|00004ac0| 5d 20 7b 0d 09 20 20 20 | 20 73 65 74 20 72 65 73 |] {.. | set res|
|00004ad0| 20 5b 72 65 73 6f 75 72 | 63 65 20 6f 70 65 6e 20 | [resour|ce open |
|00004ae0| 24 78 5d 0d 09 20 20 20 | 20 66 6f 72 65 61 63 68 |$x].. | foreach|
|00004af0| 20 79 20 5b 72 65 73 6f | 75 72 63 65 20 6c 69 73 | y [reso|urce lis|
|00004b00| 74 20 54 45 58 54 20 24 | 72 65 73 5d 20 7b 0d 09 |t TEXT $|res] {..|
|00004b10| 09 69 66 20 7b 24 79 20 | 3d 3d 20 22 70 6b 67 49 |.if {$y |== "pkgI|
|00004b20| 6e 64 65 78 22 7d 20 7b | 73 6f 75 72 63 65 20 2d |ndex"} {|source -|
|00004b30| 72 73 72 63 20 70 6b 67 | 49 6e 64 65 78 7d 0d 09 |rsrc pkg|Index}..|
|00004b40| 20 20 20 20 7d 0d 09 20 | 20 20 20 72 65 73 6f 75 | }.. | resou|
|00004b50| 72 63 65 20 63 6c 6f 73 | 65 20 24 72 65 73 0d 09 |rce clos|e $res..|
|00004b60| 7d 0d 20 20 20 20 7d 0d | 7d 0d 0d 23 20 74 63 6c |}. }.|}..# tcl|
|00004b70| 50 6b 67 55 6e 6b 6e 6f | 77 6e 20 2d 2d 0d 23 20 |PkgUnkno|wn --.# |
|00004b80| 54 68 69 73 20 70 72 6f | 63 65 64 75 72 65 20 70 |This pro|cedure p|
|00004b90| 72 6f 76 69 64 65 73 20 | 74 68 65 20 64 65 66 61 |rovides |the defa|
|00004ba0| 75 6c 74 20 66 6f 72 20 | 74 68 65 20 22 70 61 63 |ult for |the "pac|
|00004bb0| 6b 61 67 65 20 75 6e 6b | 6e 6f 77 6e 22 20 66 75 |kage unk|nown" fu|
|00004bc0| 6e 63 74 69 6f 6e 2e 0d | 23 20 49 74 20 69 73 20 |nction..|# It is |
|00004bd0| 69 6e 76 6f 6b 65 64 20 | 77 68 65 6e 20 61 20 70 |invoked |when a p|
|00004be0| 61 63 6b 61 67 65 20 74 | 68 61 74 27 73 20 6e 65 |ackage t|hat's ne|
|00004bf0| 65 64 65 64 20 63 61 6e | 27 74 20 62 65 20 66 6f |eded can|'t be fo|
|00004c00| 75 6e 64 2e 20 20 49 74 | 20 73 63 61 6e 73 0d 23 |und. It| scans.#|
|00004c10| 20 74 68 65 20 61 75 74 | 6f 5f 70 61 74 68 20 64 | the aut|o_path d|
|00004c20| 69 72 65 63 74 6f 72 69 | 65 73 20 61 6e 64 20 74 |irectori|es and t|
|00004c30| 68 65 69 72 20 69 6d 6d | 65 64 69 61 74 65 20 63 |heir imm|ediate c|
|00004c40| 68 69 6c 64 72 65 6e 20 | 6c 6f 6f 6b 69 6e 67 20 |hildren |looking |
|00004c50| 66 6f 72 0d 23 20 70 6b | 67 49 6e 64 65 78 2e 74 |for.# pk|gIndex.t|
|00004c60| 63 6c 20 66 69 6c 65 73 | 20 61 6e 64 20 73 6f 75 |cl files| and sou|
|00004c70| 72 63 65 73 20 61 6e 79 | 20 73 75 63 68 20 66 69 |rces any| such fi|
|00004c80| 6c 65 73 20 74 68 61 74 | 20 61 72 65 20 66 6f 75 |les that| are fou|
|00004c90| 6e 64 20 74 6f 20 73 65 | 74 75 70 0d 23 20 74 68 |nd to se|tup.# th|
|00004ca0| 65 20 70 61 63 6b 61 67 | 65 20 64 61 74 61 62 61 |e packag|e databa|
|00004cb0| 73 65 2e 20 20 28 4f 6e | 20 74 68 65 20 4d 61 63 |se. (On| the Mac|
|00004cc0| 69 6e 74 6f 73 68 20 77 | 65 20 61 6c 73 6f 20 73 |intosh w|e also s|
|00004cd0| 65 61 72 63 68 20 66 6f | 72 20 70 6b 67 49 6e 64 |earch fo|r pkgInd|
|00004ce0| 65 78 0d 23 20 54 45 58 | 54 20 72 65 73 6f 75 72 |ex.# TEX|T resour|
|00004cf0| 63 65 73 20 69 6e 20 61 | 6c 6c 20 66 69 6c 65 73 |ces in a|ll files|
|00004d00| 2e 29 0d 23 0d 23 20 41 | 72 67 75 6d 65 6e 74 73 |.).#.# A|rguments|
|00004d10| 3a 0d 23 20 6e 61 6d 65 | 20 2d 09 09 4e 61 6d 65 |:.# name| -..Name|
|00004d20| 20 6f 66 20 64 65 73 69 | 72 65 64 20 70 61 63 6b | of desi|red pack|
|00004d30| 61 67 65 2e 20 20 4e 6f | 74 20 75 73 65 64 2e 0d |age. No|t used..|
|00004d40| 23 20 76 65 72 73 69 6f | 6e 20 2d 09 09 56 65 72 |# versio|n -..Ver|
|00004d50| 73 69 6f 6e 20 6f 66 20 | 64 65 73 69 72 65 64 20 |sion of |desired |
|00004d60| 70 61 63 6b 61 67 65 2e | 20 20 4e 6f 74 20 75 73 |package.| Not us|
|00004d70| 65 64 2e 0d 23 20 65 78 | 61 63 74 20 2d 09 09 45 |ed..# ex|act -..E|
|00004d80| 69 74 68 65 72 20 22 2d | 65 78 61 63 74 22 20 6f |ither "-|exact" o|
|00004d90| 72 20 6f 6d 69 74 74 65 | 64 2e 20 20 4e 6f 74 20 |r omitte|d. Not |
|00004da0| 75 73 65 64 2e 0d 0d 70 | 72 6f 63 20 74 63 6c 50 |used...p|roc tclP|
|00004db0| 6b 67 55 6e 6b 6e 6f 77 | 6e 20 7b 6e 61 6d 65 20 |kgUnknow|n {name |
|00004dc0| 76 65 72 73 69 6f 6e 20 | 7b 65 78 61 63 74 20 7b |version |{exact {|
|00004dd0| 7d 7d 7d 20 7b 0d 20 20 | 20 20 67 6c 6f 62 61 6c |}}} {. | global|
|00004de0| 20 61 75 74 6f 5f 70 61 | 74 68 20 74 63 6c 5f 70 | auto_pa|th tcl_p|
|00004df0| 6c 61 74 66 6f 72 6d 20 | 65 6e 76 20 64 69 72 0d |latform |env dir.|
|00004e00| 0d 20 20 20 20 69 66 20 | 21 5b 69 6e 66 6f 20 65 |. if |![info e|
|00004e10| 78 69 73 74 73 20 61 75 | 74 6f 5f 70 61 74 68 5d |xists au|to_path]|
|00004e20| 20 7b 0d 09 72 65 74 75 | 72 6e 0d 20 20 20 20 7d | {..retu|rn. }|
|00004e30| 0d 20 20 20 20 69 66 20 | 7b 5b 69 6e 66 6f 20 65 |. if |{[info e|
|00004e40| 78 69 73 74 73 20 64 69 | 72 5d 7d 20 7b 0d 09 73 |xists di|r]} {..s|
|00004e50| 65 74 20 73 61 76 65 5f | 64 69 72 20 24 64 69 72 |et save_|dir $dir|
|00004e60| 0d 20 20 20 20 7d 0d 20 | 20 20 20 66 6f 72 20 7b |. }. | for {|
|00004e70| 73 65 74 20 69 20 5b 65 | 78 70 72 20 5b 6c 6c 65 |set i [e|xpr [lle|
|00004e80| 6e 67 74 68 20 24 61 75 | 74 6f 5f 70 61 74 68 5d |ngth $au|to_path]|
|00004e90| 20 2d 20 31 5d 7d 20 7b | 24 69 20 3e 3d 20 30 7d | - 1]} {|$i >= 0}|
|00004ea0| 20 7b 69 6e 63 72 20 69 | 20 2d 31 7d 20 7b 0d 09 | {incr i| -1} {..|
|00004eb0| 23 20 77 65 20 63 61 6e | 27 74 20 75 73 65 20 67 |# we can|'t use g|
|00004ec0| 6c 6f 62 20 69 6e 20 73 | 61 66 65 20 69 6e 74 65 |lob in s|afe inte|
|00004ed0| 72 70 73 2c 20 73 6f 20 | 65 6e 63 6c 6f 73 65 20 |rps, so |enclose |
|00004ee0| 74 68 65 20 66 6f 6c 6c | 6f 77 69 6e 67 0d 09 23 |the foll|owing..#|
|00004ef0| 20 69 6e 20 61 20 63 61 | 74 63 68 20 73 74 61 74 | in a ca|tch stat|
|00004f00| 65 6d 65 6e 74 0d 09 63 | 61 74 63 68 20 7b 0d 09 |ement..c|atch {..|
|00004f10| 20 20 20 20 66 6f 72 65 | 61 63 68 20 66 69 6c 65 | fore|ach file|
|00004f20| 20 5b 67 6c 6f 62 20 2d | 6e 6f 63 6f 6d 70 6c 61 | [glob -|nocompla|
|00004f30| 69 6e 20 5b 66 69 6c 65 | 20 6a 6f 69 6e 20 5b 6c |in [file| join [l|
|00004f40| 69 6e 64 65 78 20 24 61 | 75 74 6f 5f 70 61 74 68 |index $a|uto_path|
|00004f50| 20 24 69 5d 20 5c 0d 09 | 09 20 20 20 20 2a 20 70 | $i] \..|. * p|
|00004f60| 6b 67 49 6e 64 65 78 2e | 74 63 6c 5d 5d 20 7b 0d |kgIndex.|tcl]] {.|
|00004f70| 09 09 73 65 74 20 64 69 | 72 20 5b 66 69 6c 65 20 |..set di|r [file |
|00004f80| 64 69 72 6e 61 6d 65 20 | 24 66 69 6c 65 5d 0d 09 |dirname |$file]..|
|00004f90| 09 69 66 20 5b 63 61 74 | 63 68 20 7b 73 6f 75 72 |.if [cat|ch {sour|
|00004fa0| 63 65 20 24 66 69 6c 65 | 7d 20 6d 73 67 5d 20 7b |ce $file|} msg] {|
|00004fb0| 0d 09 09 20 20 20 20 74 | 63 6c 4c 6f 67 20 22 65 |... t|clLog "e|
|00004fc0| 72 72 6f 72 20 72 65 61 | 64 69 6e 67 20 70 61 63 |rror rea|ding pac|
|00004fd0| 6b 61 67 65 20 69 6e 64 | 65 78 20 66 69 6c 65 20 |kage ind|ex file |
|00004fe0| 24 66 69 6c 65 3a 20 24 | 6d 73 67 22 0d 09 09 7d |$file: $|msg"...}|
|00004ff0| 0d 09 20 20 20 20 7d 0d | 20 20 20 20 20 20 20 20 |.. }.| |
|00005000| 7d 0d 09 73 65 74 20 64 | 69 72 20 5b 6c 69 6e 64 |}..set d|ir [lind|
|00005010| 65 78 20 24 61 75 74 6f | 5f 70 61 74 68 20 24 69 |ex $auto|_path $i|
|00005020| 5d 0d 09 73 65 74 20 66 | 69 6c 65 20 5b 66 69 6c |]..set f|ile [fil|
|00005030| 65 20 6a 6f 69 6e 20 24 | 64 69 72 20 70 6b 67 49 |e join $|dir pkgI|
|00005040| 6e 64 65 78 2e 74 63 6c | 5d 0d 09 23 20 73 61 66 |ndex.tcl|]..# saf|
|00005050| 65 20 69 6e 74 65 72 70 | 73 20 75 73 75 61 6c 6c |e interp|s usuall|
|00005060| 79 20 64 6f 6e 27 74 20 | 68 61 76 65 20 22 66 69 |y don't |have "fi|
|00005070| 6c 65 20 72 65 61 64 61 | 62 6c 65 22 2c 20 6e 6f |le reada|ble", no|
|00005080| 72 20 73 74 64 65 72 72 | 20 63 68 61 6e 6e 65 6c |r stderr| channel|
|00005090| 0d 09 69 66 20 7b 5b 69 | 6e 74 65 72 70 20 69 73 |..if {[i|nterp is|
|000050a0| 73 61 66 65 5d 20 7c 7c | 20 5b 66 69 6c 65 20 72 |safe] ||| [file r|
|000050b0| 65 61 64 61 62 6c 65 20 | 24 66 69 6c 65 5d 7d 20 |eadable |$file]} |
|000050c0| 7b 0d 09 20 20 20 20 69 | 66 20 7b 5b 63 61 74 63 |{.. i|f {[catc|
|000050d0| 68 20 7b 73 6f 75 72 63 | 65 20 24 66 69 6c 65 7d |h {sourc|e $file}|
|000050e0| 20 6d 73 67 5d 20 26 26 | 20 21 5b 69 6e 74 65 72 | msg] &&| ![inter|
|000050f0| 70 20 69 73 73 61 66 65 | 5d 7d 20 20 7b 0d 09 09 |p issafe|]} {...|
|00005100| 74 63 6c 4c 6f 67 20 22 | 65 72 72 6f 72 20 72 65 |tclLog "|error re|
|00005110| 61 64 69 6e 67 20 70 61 | 63 6b 61 67 65 20 69 6e |ading pa|ckage in|
|00005120| 64 65 78 20 66 69 6c 65 | 20 24 66 69 6c 65 3a 20 |dex file| $file: |
|00005130| 24 6d 73 67 22 0d 09 20 | 20 20 20 7d 0d 09 7d 0d |$msg".. | }..}.|
|00005140| 09 23 20 4f 6e 20 74 68 | 65 20 4d 61 63 69 6e 74 |.# On th|e Macint|
|00005150| 6f 73 68 20 77 65 20 61 | 6c 73 6f 20 6c 6f 6f 6b |osh we a|lso look|
|00005160| 20 69 6e 20 74 68 65 20 | 72 65 73 6f 75 72 63 65 | in the |resource|
|00005170| 20 66 6f 72 6b 20 0d 09 | 23 20 6f 66 20 73 68 61 | fork ..|# of sha|
|00005180| 72 65 64 20 6c 69 62 72 | 61 72 69 65 73 0d 09 23 |red libr|aries..#|
|00005190| 20 57 65 20 63 61 6e 27 | 74 20 75 73 65 20 74 63 | We can'|t use tc|
|000051a0| 6c 4d 61 63 50 6b 67 53 | 65 61 72 63 68 20 69 6e |lMacPkgS|earch in|
|000051b0| 20 73 61 66 65 20 69 6e | 74 65 72 70 73 20 62 65 | safe in|terps be|
|000051c0| 63 61 75 73 65 20 69 74 | 20 75 73 65 73 20 67 6c |cause it| uses gl|
|000051d0| 6f 62 0d 09 69 66 20 7b | 28 21 5b 69 6e 74 65 72 |ob..if {|(![inter|
|000051e0| 70 20 69 73 73 61 66 65 | 5d 29 20 26 26 20 28 24 |p issafe|]) && ($|
|000051f0| 74 63 6c 5f 70 6c 61 74 | 66 6f 72 6d 28 70 6c 61 |tcl_plat|form(pla|
|00005200| 74 66 6f 72 6d 29 20 3d | 3d 20 22 6d 61 63 69 6e |tform) =|= "macin|
|00005210| 74 6f 73 68 22 29 7d 20 | 7b 0d 09 20 20 20 20 73 |tosh")} |{.. s|
|00005220| 65 74 20 64 69 72 20 5b | 6c 69 6e 64 65 78 20 24 |et dir [|lindex $|
|00005230| 61 75 74 6f 5f 70 61 74 | 68 20 24 69 5d 0d 09 20 |auto_pat|h $i].. |
|00005240| 20 20 20 74 63 6c 4d 61 | 63 50 6b 67 53 65 61 72 | tclMa|cPkgSear|
|00005250| 63 68 20 24 64 69 72 0d | 09 09 66 6f 72 65 61 63 |ch $dir.|..foreac|
|00005260| 68 20 78 20 5b 67 6c 6f | 62 20 2d 6e 6f 63 6f 6d |h x [glo|b -nocom|
|00005270| 70 6c 61 69 6e 20 5b 66 | 69 6c 65 20 6a 6f 69 6e |plain [f|ile join|
|00005280| 20 24 64 69 72 20 2a 5d | 5d 20 7b 0d 09 09 20 20 | $dir *]|] {... |
|00005290| 20 20 69 66 20 5b 66 69 | 6c 65 20 69 73 64 69 72 | if [fi|le isdir|
|000052a0| 65 63 74 6f 72 79 20 24 | 78 5d 20 7b 0d 09 09 09 |ectory $|x] {....|
|000052b0| 73 65 74 20 64 69 72 20 | 24 78 0d 09 09 09 74 63 |set dir |$x....tc|
|000052c0| 6c 4d 61 63 50 6b 67 53 | 65 61 72 63 68 20 24 64 |lMacPkgS|earch $d|
|000052d0| 69 72 0d 09 09 20 20 20 | 20 7d 0d 09 09 7d 0d 09 |ir... | }...}..|
|000052e0| 7d 0d 20 20 20 20 7d 0d | 20 20 20 20 69 66 20 7b |}. }.| if {|
|000052f0| 5b 69 6e 66 6f 20 65 78 | 69 73 74 73 20 73 61 76 |[info ex|ists sav|
|00005300| 65 5f 64 69 72 5d 7d 20 | 7b 0d 09 73 65 74 20 64 |e_dir]} |{..set d|
|00005310| 69 72 20 24 73 61 76 65 | 5f 64 69 72 0d 20 20 20 |ir $save|_dir. |
|00005320| 20 7d 20 65 6c 73 65 20 | 7b 0d 09 75 6e 73 65 74 | } else |{..unset|
|00005330| 20 64 69 72 0d 20 20 20 | 20 7d 0d 7d 0d 00 00 22 | dir. | }.}..."|
|00005340| f3 23 20 68 69 73 74 6f | 72 79 2e 74 63 6c 20 2d |.# histo|ry.tcl -|
|00005350| 2d 0d 23 0d 23 20 49 6d | 70 6c 65 6d 65 6e 74 61 |-.#.# Im|plementa|
|00005360| 74 69 6f 6e 20 6f 66 20 | 74 68 65 20 68 69 73 74 |tion of |the hist|
|00005370| 6f 72 79 20 63 6f 6d 6d | 61 6e 64 2e 0d 23 0d 23 |ory comm|and..#.#|
|00005380| 20 53 43 43 53 3a 20 40 | 28 23 29 20 68 69 73 74 | SCCS: @|(#) hist|
|00005390| 6f 72 79 2e 74 63 6c 20 | 31 2e 37 20 39 37 2f 30 |ory.tcl |1.7 97/0|
|000053a0| 38 2f 30 37 20 31 36 3a | 34 35 3a 35 30 0d 23 0d |8/07 16:|45:50.#.|
|000053b0| 23 20 43 6f 70 79 72 69 | 67 68 74 20 28 63 29 20 |# Copyri|ght (c) |
|000053c0| 31 39 39 37 20 53 75 6e | 20 4d 69 63 72 6f 73 79 |1997 Sun| Microsy|
|000053d0| 73 74 65 6d 73 2c 20 49 | 6e 63 2e 0d 23 0d 23 20 |stems, I|nc..#.# |
|000053e0| 53 65 65 20 74 68 65 20 | 66 69 6c 65 20 22 6c 69 |See the |file "li|
|000053f0| 63 65 6e 73 65 2e 74 65 | 72 6d 73 22 20 66 6f 72 |cense.te|rms" for|
|00005400| 20 69 6e 66 6f 72 6d 61 | 74 69 6f 6e 20 6f 6e 20 | informa|tion on |
|00005410| 75 73 61 67 65 20 61 6e | 64 20 72 65 64 69 73 74 |usage an|d redist|
|00005420| 72 69 62 75 74 69 6f 6e | 0d 23 20 6f 66 20 74 68 |ribution|.# of th|
|00005430| 69 73 20 66 69 6c 65 2c | 20 61 6e 64 20 66 6f 72 |is file,| and for|
|00005440| 20 61 20 44 49 53 43 4c | 41 49 4d 45 52 20 4f 46 | a DISCL|AIMER OF|
|00005450| 20 41 4c 4c 20 57 41 52 | 52 41 4e 54 49 45 53 2e | ALL WAR|RANTIES.|
|00005460| 0d 23 0d 0d 23 20 54 68 | 65 20 74 63 6c 3a 3a 68 |.#..# Th|e tcl::h|
|00005470| 69 73 74 6f 72 79 20 61 | 72 72 61 79 20 68 6f 6c |istory a|rray hol|
|00005480| 64 73 20 74 68 65 20 68 | 69 73 74 6f 72 79 20 6c |ds the h|istory l|
|00005490| 69 73 74 20 61 6e 64 0d | 23 20 73 6f 6d 65 20 61 |ist and.|# some a|
|000054a0| 64 64 69 74 69 6f 6e 61 | 6c 20 62 6f 6f 6b 6b 65 |dditiona|l bookke|
|000054b0| 65 70 69 6e 67 20 76 61 | 72 69 61 62 6c 65 73 2e |eping va|riables.|
|000054c0| 0d 23 0d 23 20 6e 65 78 | 74 69 64 09 74 68 65 20 |.#.# nex|tid.the |
|000054d0| 69 6e 64 65 78 20 75 73 | 65 64 20 66 6f 72 20 74 |index us|ed for t|
|000054e0| 68 65 20 6e 65 78 74 20 | 68 69 73 74 6f 72 79 20 |he next |history |
|000054f0| 6c 69 73 74 20 69 74 65 | 6d 2e 0d 23 20 6b 65 65 |list ite|m..# kee|
|00005500| 70 09 09 74 68 65 20 6d | 61 78 20 73 69 7a 65 20 |p..the m|ax size |
|00005510| 6f 66 20 74 68 65 20 68 | 69 73 74 6f 72 79 20 6c |of the h|istory l|
|00005520| 69 73 74 0d 23 20 6f 6c | 64 65 73 74 09 74 68 65 |ist.# ol|dest.the|
|00005530| 20 69 6e 64 65 78 20 6f | 66 20 74 68 65 20 6f 6c | index o|f the ol|
|00005540| 64 65 73 74 20 69 74 65 | 6d 20 69 6e 20 74 68 65 |dest ite|m in the|
|00005550| 20 68 69 73 74 6f 72 79 | 2e 0d 0d 6e 61 6d 65 73 | history|...names|
|00005560| 70 61 63 65 20 65 76 61 | 6c 20 74 63 6c 20 7b 0d |pace eva|l tcl {.|
|00005570| 20 20 20 20 76 61 72 69 | 61 62 6c 65 20 68 69 73 | vari|able his|
|00005580| 74 6f 72 79 0d 20 20 20 | 20 69 66 20 21 5b 69 6e |tory. | if ![in|
|00005590| 66 6f 20 65 78 69 73 74 | 73 20 68 69 73 74 6f 72 |fo exist|s histor|
|000055a0| 79 5d 20 7b 0d 09 61 72 | 72 61 79 20 73 65 74 20 |y] {..ar|ray set |
|000055b0| 68 69 73 74 6f 72 79 20 | 7b 0d 09 20 20 20 20 6e |history |{.. n|
|000055c0| 65 78 74 69 64 09 30 0d | 09 20 20 20 20 6b 65 65 |extid.0.|. kee|
|000055d0| 70 09 32 30 0d 09 20 20 | 20 20 6f 6c 64 65 73 74 |p.20.. | oldest|
|000055e0| 09 2d 32 30 0d 09 7d 0d | 20 20 20 20 7d 0d 7d 0d |.-20..}.| }.}.|
|000055f0| 0d 23 20 68 69 73 74 6f | 72 79 20 2d 2d 0d 23 0d |.# histo|ry --.#.|
|00005600| 23 09 54 68 69 73 20 69 | 73 20 74 68 65 20 6d 61 |#.This i|s the ma|
|00005610| 69 6e 20 68 69 73 74 6f | 72 79 20 63 6f 6d 6d 61 |in histo|ry comma|
|00005620| 6e 64 2e 20 20 53 65 65 | 20 74 68 65 20 6d 61 6e |nd. See| the man|
|00005630| 20 70 61 67 65 20 66 6f | 72 20 69 74 73 20 69 6e | page fo|r its in|
|00005640| 74 65 72 66 61 63 65 2e | 0d 23 09 54 68 69 73 20 |terface.|.#.This |
|00005650| 64 6f 65 73 20 61 72 67 | 75 6d 65 6e 74 20 63 68 |does arg|ument ch|
|00005660| 65 63 6b 69 6e 67 20 61 | 6e 64 20 63 61 6c 6c 73 |ecking a|nd calls|
|00005670| 20 68 65 6c 70 65 72 20 | 70 72 6f 63 65 64 75 72 | helper |procedur|
|00005680| 65 73 20 69 6e 20 74 68 | 65 0d 23 09 68 69 73 74 |es in th|e.#.hist|
|00005690| 6f 72 79 20 6e 61 6d 65 | 73 70 61 63 65 2e 0d 0d |ory name|space...|
|000056a0| 70 72 6f 63 20 68 69 73 | 74 6f 72 79 20 7b 61 72 |proc his|tory {ar|
|000056b0| 67 73 7d 20 7b 0d 20 20 | 20 20 73 65 74 20 6c 65 |gs} {. | set le|
|000056c0| 6e 20 5b 6c 6c 65 6e 67 | 74 68 20 24 61 72 67 73 |n [lleng|th $args|
|000056d0| 5d 0d 20 20 20 20 69 66 | 20 7b 24 6c 65 6e 20 3d |]. if| {$len =|
|000056e0| 3d 20 30 7d 20 7b 0d 09 | 72 65 74 75 72 6e 20 5b |= 0} {..|return [|
|000056f0| 74 63 6c 3a 3a 48 69 73 | 74 49 6e 66 6f 5d 0d 20 |tcl::His|tInfo]. |
|00005700| 20 20 20 7d 0d 20 20 20 | 20 73 65 74 20 6b 65 79 | }. | set key|
|00005710| 20 5b 6c 69 6e 64 65 78 | 20 24 61 72 67 73 20 30 | [lindex| $args 0|
|00005720| 5d 0d 20 20 20 20 73 65 | 74 20 6f 70 74 69 6f 6e |]. se|t option|
|00005730| 73 20 22 61 64 64 2c 20 | 63 68 61 6e 67 65 2c 20 |s "add, |change, |
|00005740| 63 6c 65 61 72 2c 20 65 | 76 65 6e 74 2c 20 69 6e |clear, e|vent, in|
|00005750| 66 6f 2c 20 6b 65 65 70 | 2c 20 6e 65 78 74 69 64 |fo, keep|, nextid|
|00005760| 2c 20 6f 72 20 72 65 64 | 6f 22 0d 20 20 20 20 73 |, or red|o". s|
|00005770| 77 69 74 63 68 20 2d 67 | 6c 6f 62 20 2d 2d 20 24 |witch -g|lob -- $|
|00005780| 6b 65 79 20 7b 0d 09 61 | 2a 20 7b 20 23 20 68 69 |key {..a|* { # hi|
|00005790| 73 74 6f 72 79 20 61 64 | 64 0d 0d 09 20 20 20 20 |story ad|d... |
|000057a0| 69 66 20 7b 24 6c 65 6e | 20 3e 20 33 7d 20 7b 0d |if {$len| > 3} {.|
|000057b0| 09 09 72 65 74 75 72 6e | 20 2d 63 6f 64 65 20 65 |..return| -code e|
|000057c0| 72 72 6f 72 20 22 77 72 | 6f 6e 67 20 23 20 61 72 |rror "wr|ong # ar|
|000057d0| 67 73 3a 20 73 68 6f 75 | 6c 64 20 62 65 20 5c 22 |gs: shou|ld be \"|
|000057e0| 68 69 73 74 6f 72 79 20 | 61 64 64 20 65 76 65 6e |history |add even|
|000057f0| 74 20 3f 65 78 65 63 3f | 5c 22 22 0d 09 20 20 20 |t ?exec?|\"".. |
|00005800| 20 7d 0d 09 20 20 20 20 | 69 66 20 7b 21 5b 73 74 | }.. |if {![st|
|00005810| 72 69 6e 67 20 6d 61 74 | 63 68 20 24 6b 65 79 2a |ring mat|ch $key*|
|00005820| 20 61 64 64 5d 7d 20 7b | 0d 09 09 72 65 74 75 72 | add]} {|...retur|
|00005830| 6e 20 2d 63 6f 64 65 20 | 65 72 72 6f 72 20 22 62 |n -code |error "b|
|00005840| 61 64 20 6f 70 74 69 6f | 6e 20 5c 22 24 6b 65 79 |ad optio|n \"$key|
|00005850| 5c 22 3a 20 6d 75 73 74 | 20 62 65 20 24 6f 70 74 |\": must| be $opt|
|00005860| 69 6f 6e 73 22 0d 09 20 | 20 20 20 7d 0d 09 20 20 |ions".. | }.. |
|00005870| 20 20 69 66 20 7b 24 6c | 65 6e 20 3d 3d 20 33 7d | if {$l|en == 3}|
|00005880| 20 7b 0d 09 09 73 65 74 | 20 61 72 67 20 5b 6c 69 | {...set| arg [li|
|00005890| 6e 64 65 78 20 24 61 72 | 67 73 20 32 5d 0d 09 09 |ndex $ar|gs 2]...|
|000058a0| 69 66 20 7b 21 20 28 5b | 73 74 72 69 6e 67 20 6d |if {! ([|string m|
|000058b0| 61 74 63 68 20 65 2a 20 | 24 61 72 67 5d 20 26 26 |atch e* |$arg] &&|
|000058c0| 20 5b 73 74 72 69 6e 67 | 20 6d 61 74 63 68 20 24 | [string| match $|
|000058d0| 61 72 67 2a 20 65 78 65 | 63 5d 29 7d 20 7b 0d 09 |arg* exe|c])} {..|
|000058e0| 09 20 20 20 20 72 65 74 | 75 72 6e 20 2d 63 6f 64 |. ret|urn -cod|
|000058f0| 65 20 65 72 72 6f 72 20 | 22 62 61 64 20 61 72 67 |e error |"bad arg|
|00005900| 75 6d 65 6e 74 20 5c 22 | 24 61 72 67 5c 22 3a 20 |ument \"|$arg\": |
|00005910| 73 68 6f 75 6c 64 20 62 | 65 20 5c 22 65 78 65 63 |should b|e \"exec|
|00005920| 5c 22 22 0d 09 09 7d 0d | 09 20 20 20 20 7d 0d 09 |\""...}.|. }..|
|00005930| 20 20 20 20 72 65 74 75 | 72 6e 20 5b 74 63 6c 3a | retu|rn [tcl:|
|00005940| 3a 48 69 73 74 41 64 64 | 20 5b 6c 69 6e 64 65 78 |:HistAdd| [lindex|
|00005950| 20 24 61 72 67 73 20 31 | 5d 20 5b 6c 69 6e 64 65 | $args 1|] [linde|
|00005960| 78 20 24 61 72 67 73 20 | 32 5d 5d 0d 09 7d 0d 09 |x $args |2]]..}..|
|00005970| 63 68 2a 20 7b 20 23 20 | 68 69 73 74 6f 72 79 20 |ch* { # |history |
|00005980| 63 68 61 6e 67 65 0d 0d | 09 20 20 20 20 69 66 20 |change..|. if |
|00005990| 7b 28 24 6c 65 6e 20 3e | 20 33 29 20 7c 7c 20 28 |{($len >| 3) || (|
|000059a0| 24 6c 65 6e 20 3c 20 32 | 29 7d 20 7b 0d 09 09 72 |$len < 2|)} {...r|
|000059b0| 65 74 75 72 6e 20 2d 63 | 6f 64 65 20 65 72 72 6f |eturn -c|ode erro|
|000059c0| 72 20 22 77 72 6f 6e 67 | 20 23 20 61 72 67 73 3a |r "wrong| # args:|
|000059d0| 20 73 68 6f 75 6c 64 20 | 62 65 20 5c 22 68 69 73 | should |be \"his|
|000059e0| 74 6f 72 79 20 63 68 61 | 6e 67 65 20 6e 65 77 56 |tory cha|nge newV|
|000059f0| 61 6c 75 65 20 3f 65 76 | 65 6e 74 3f 5c 22 22 0d |alue ?ev|ent?\"".|
|00005a00| 09 20 20 20 20 7d 0d 09 | 20 20 20 20 69 66 20 7b |. }..| if {|
|00005a10| 21 5b 73 74 72 69 6e 67 | 20 6d 61 74 63 68 20 24 |![string| match $|
|00005a20| 6b 65 79 2a 20 63 68 61 | 6e 67 65 5d 7d 20 7b 0d |key* cha|nge]} {.|
|00005a30| 09 09 72 65 74 75 72 6e | 20 2d 63 6f 64 65 20 65 |..return| -code e|
|00005a40| 72 72 6f 72 20 22 62 61 | 64 20 6f 70 74 69 6f 6e |rror "ba|d option|
|00005a50| 20 5c 22 24 6b 65 79 5c | 22 3a 20 6d 75 73 74 20 | \"$key\|": must |
|00005a60| 62 65 20 24 6f 70 74 69 | 6f 6e 73 22 0d 09 20 20 |be $opti|ons".. |
|00005a70| 20 20 7d 0d 09 20 20 20 | 20 69 66 20 7b 24 6c 65 | }.. | if {$le|
|00005a80| 6e 20 3d 3d 20 32 7d 20 | 7b 0d 09 09 73 65 74 20 |n == 2} |{...set |
|00005a90| 65 76 65 6e 74 20 30 0d | 09 20 20 20 20 7d 20 65 |event 0.|. } e|
|00005aa0| 6c 73 65 20 7b 0d 09 09 | 73 65 74 20 65 76 65 6e |lse {...|set even|
|00005ab0| 74 20 5b 6c 69 6e 64 65 | 78 20 24 61 72 67 73 20 |t [linde|x $args |
|00005ac0| 32 5d 0d 09 20 20 20 20 | 7d 0d 0d 09 20 20 20 20 |2].. |}... |
|00005ad0| 72 65 74 75 72 6e 20 5b | 74 63 6c 3a 3a 48 69 73 |return [|tcl::His|
|00005ae0| 74 43 68 61 6e 67 65 20 | 5b 6c 69 6e 64 65 78 20 |tChange |[lindex |
|00005af0| 24 61 72 67 73 20 31 5d | 20 24 65 76 65 6e 74 5d |$args 1]| $event]|
|00005b00| 0d 09 7d 0d 09 63 6c 2a | 20 7b 20 23 20 68 69 73 |..}..cl*| { # his|
|00005b10| 74 6f 72 79 20 63 6c 65 | 61 72 0d 0d 09 20 20 20 |tory cle|ar... |
|00005b20| 20 69 66 20 7b 28 24 6c | 65 6e 20 3e 20 31 29 7d | if {($l|en > 1)}|
|00005b30| 20 7b 0d 09 09 72 65 74 | 75 72 6e 20 2d 63 6f 64 | {...ret|urn -cod|
|00005b40| 65 20 65 72 72 6f 72 20 | 22 77 72 6f 6e 67 20 23 |e error |"wrong #|
|00005b50| 20 61 72 67 73 3a 20 73 | 68 6f 75 6c 64 20 62 65 | args: s|hould be|
|00005b60| 20 5c 22 68 69 73 74 6f | 72 79 20 63 6c 65 61 72 | \"histo|ry clear|
|00005b70| 5c 22 22 0d 09 20 20 20 | 20 7d 0d 09 20 20 20 20 |\"".. | }.. |
|00005b80| 69 66 20 7b 21 5b 73 74 | 72 69 6e 67 20 6d 61 74 |if {![st|ring mat|
|00005b90| 63 68 20 24 6b 65 79 2a | 20 63 6c 65 61 72 5d 7d |ch $key*| clear]}|
|00005ba0| 20 7b 0d 09 09 72 65 74 | 75 72 6e 20 2d 63 6f 64 | {...ret|urn -cod|
|00005bb0| 65 20 65 72 72 6f 72 20 | 22 62 61 64 20 6f 70 74 |e error |"bad opt|
|00005bc0| 69 6f 6e 20 5c 22 24 6b | 65 79 5c 22 3a 20 6d 75 |ion \"$k|ey\": mu|
|00005bd0| 73 74 20 62 65 20 24 6f | 70 74 69 6f 6e 73 22 0d |st be $o|ptions".|
|00005be0| 09 20 20 20 20 7d 0d 09 | 20 20 20 20 72 65 74 75 |. }..| retu|
|00005bf0| 72 6e 20 5b 74 63 6c 3a | 3a 48 69 73 74 43 6c 65 |rn [tcl:|:HistCle|
|00005c00| 61 72 5d 0d 09 7d 0d 09 | 65 2a 20 7b 20 23 20 68 |ar]..}..|e* { # h|
|00005c10| 69 73 74 6f 72 79 20 65 | 76 65 6e 74 0d 0d 09 20 |istory e|vent... |
|00005c20| 20 20 20 69 66 20 7b 24 | 6c 65 6e 20 3e 20 32 7d | if {$|len > 2}|
|00005c30| 20 7b 0d 09 09 72 65 74 | 75 72 6e 20 2d 63 6f 64 | {...ret|urn -cod|
|00005c40| 65 20 65 72 72 6f 72 20 | 22 77 72 6f 6e 67 20 23 |e error |"wrong #|
|00005c50| 20 61 72 67 73 3a 20 73 | 68 6f 75 6c 64 20 62 65 | args: s|hould be|
|00005c60| 20 5c 22 68 69 73 74 6f | 72 79 20 65 76 65 6e 74 | \"histo|ry event|
|00005c70| 20 3f 65 76 65 6e 74 3f | 5c 22 22 0d 09 20 20 20 | ?event?|\"".. |
|00005c80| 20 7d 0d 09 20 20 20 20 | 69 66 20 7b 21 5b 73 74 | }.. |if {![st|
|00005c90| 72 69 6e 67 20 6d 61 74 | 63 68 20 24 6b 65 79 2a |ring mat|ch $key*|
|00005ca0| 20 65 76 65 6e 74 5d 7d | 20 7b 0d 09 09 72 65 74 | event]}| {...ret|
|00005cb0| 75 72 6e 20 2d 63 6f 64 | 65 20 65 72 72 6f 72 20 |urn -cod|e error |
|00005cc0| 22 62 61 64 20 6f 70 74 | 69 6f 6e 20 5c 22 24 6b |"bad opt|ion \"$k|
|00005cd0| 65 79 5c 22 3a 20 6d 75 | 73 74 20 62 65 20 24 6f |ey\": mu|st be $o|
|00005ce0| 70 74 69 6f 6e 73 22 0d | 09 20 20 20 20 7d 0d 09 |ptions".|. }..|
|00005cf0| 20 20 20 20 69 66 20 7b | 24 6c 65 6e 20 3d 3d 20 | if {|$len == |
|00005d00| 31 7d 20 7b 0d 09 09 73 | 65 74 20 65 76 65 6e 74 |1} {...s|et event|
|00005d10| 20 2d 31 0d 09 20 20 20 | 20 7d 20 65 6c 73 65 20 | -1.. | } else |
|00005d20| 7b 0d 09 09 73 65 74 20 | 65 76 65 6e 74 20 5b 6c |{...set |event [l|
|00005d30| 69 6e 64 65 78 20 24 61 | 72 67 73 20 31 5d 0d 09 |index $a|rgs 1]..|
|00005d40| 20 20 20 20 7d 0d 09 20 | 20 20 20 72 65 74 75 72 | }.. | retur|
|00005d50| 6e 20 5b 74 63 6c 3a 3a | 48 69 73 74 45 76 65 6e |n [tcl::|HistEven|
|00005d60| 74 20 24 65 76 65 6e 74 | 5d 0d 09 7d 0d 09 69 2a |t $event|]..}..i*|
|00005d70| 20 7b 20 23 20 68 69 73 | 74 6f 72 79 20 69 6e 66 | { # his|tory inf|
|00005d80| 6f 0d 0d 09 20 20 20 20 | 69 66 20 7b 24 6c 65 6e |o... |if {$len|
|00005d90| 20 3e 20 32 7d 20 7b 0d | 09 09 72 65 74 75 72 6e | > 2} {.|..return|
|00005da0| 20 2d 63 6f 64 65 20 65 | 72 72 6f 72 20 22 77 72 | -code e|rror "wr|
|00005db0| 6f 6e 67 20 23 20 61 72 | 67 73 3a 20 73 68 6f 75 |ong # ar|gs: shou|
|00005dc0| 6c 64 20 62 65 20 5c 22 | 68 69 73 74 6f 72 79 20 |ld be \"|history |
|00005dd0| 69 6e 66 6f 20 3f 63 6f | 75 6e 74 3f 5c 22 22 0d |info ?co|unt?\"".|
|00005de0| 09 20 20 20 20 7d 0d 09 | 20 20 20 20 69 66 20 7b |. }..| if {|
|00005df0| 21 5b 73 74 72 69 6e 67 | 20 6d 61 74 63 68 20 24 |![string| match $|
|00005e00| 6b 65 79 2a 20 69 6e 66 | 6f 5d 7d 20 7b 0d 09 09 |key* inf|o]} {...|
|00005e10| 72 65 74 75 72 6e 20 2d | 63 6f 64 65 20 65 72 72 |return -|code err|
|00005e20| 6f 72 20 22 62 61 64 20 | 6f 70 74 69 6f 6e 20 5c |or "bad |option \|
|00005e30| 22 24 6b 65 79 5c 22 3a | 20 6d 75 73 74 20 62 65 |"$key\":| must be|
|00005e40| 20 24 6f 70 74 69 6f 6e | 73 22 0d 09 20 20 20 20 | $option|s".. |
|00005e50| 7d 0d 09 20 20 20 20 72 | 65 74 75 72 6e 20 5b 74 |}.. r|eturn [t|
|00005e60| 63 6c 3a 3a 48 69 73 74 | 49 6e 66 6f 20 5b 6c 69 |cl::Hist|Info [li|
|00005e70| 6e 64 65 78 20 24 61 72 | 67 73 20 31 5d 5d 0d 09 |ndex $ar|gs 1]]..|
|00005e80| 7d 0d 09 6b 2a 20 7b 20 | 23 20 68 69 73 74 6f 72 |}..k* { |# histor|
|00005e90| 79 20 6b 65 65 70 0d 0d | 09 20 20 20 20 69 66 20 |y keep..|. if |
|00005ea0| 7b 24 6c 65 6e 20 3e 20 | 32 7d 20 7b 0d 09 09 72 |{$len > |2} {...r|
|00005eb0| 65 74 75 72 6e 20 2d 63 | 6f 64 65 20 65 72 72 6f |eturn -c|ode erro|
|00005ec0| 72 20 22 77 72 6f 6e 67 | 20 23 20 61 72 67 73 3a |r "wrong| # args:|
|00005ed0| 20 73 68 6f 75 6c 64 20 | 62 65 20 5c 22 68 69 73 | should |be \"his|
|00005ee0| 74 6f 72 79 20 6b 65 65 | 70 20 3f 63 6f 75 6e 74 |tory kee|p ?count|
|00005ef0| 3f 5c 22 22 0d 09 20 20 | 20 20 7d 0d 09 20 20 20 |?\"".. | }.. |
|00005f00| 20 69 66 20 7b 24 6c 65 | 6e 20 3d 3d 20 31 7d 20 | if {$le|n == 1} |
|00005f10| 7b 0d 09 09 72 65 74 75 | 72 6e 20 5b 74 63 6c 3a |{...retu|rn [tcl:|
|00005f20| 3a 48 69 73 74 4b 65 65 | 70 5d 0d 09 20 20 20 20 |:HistKee|p].. |
|00005f30| 7d 20 65 6c 73 65 20 7b | 0d 09 09 73 65 74 20 6c |} else {|...set l|
|00005f40| 69 6d 69 74 20 5b 6c 69 | 6e 64 65 78 20 24 61 72 |imit [li|ndex $ar|
|00005f50| 67 73 20 31 5d 0d 09 09 | 69 66 20 7b 5b 63 61 74 |gs 1]...|if {[cat|
|00005f60| 63 68 20 7b 65 78 70 72 | 20 24 6c 69 6d 69 74 7d |ch {expr| $limit}|
|00005f70| 5d 20 7c 7c 20 28 24 6c | 69 6d 69 74 20 3c 20 30 |] || ($l|imit < 0|
|00005f80| 29 7d 20 7b 0d 09 09 20 | 20 20 20 72 65 74 75 72 |)} {... | retur|
|00005f90| 6e 20 2d 63 6f 64 65 20 | 65 72 72 6f 72 20 22 69 |n -code |error "i|
|00005fa0| 6c 6c 65 67 61 6c 20 6b | 65 65 70 20 63 6f 75 6e |llegal k|eep coun|
|00005fb0| 74 20 5c 22 24 6c 69 6d | 69 74 5c 22 22 0d 09 09 |t \"$lim|it\""...|
|00005fc0| 7d 0d 09 09 72 65 74 75 | 72 6e 20 5b 74 63 6c 3a |}...retu|rn [tcl:|
|00005fd0| 3a 48 69 73 74 4b 65 65 | 70 20 24 6c 69 6d 69 74 |:HistKee|p $limit|
|00005fe0| 5d 0d 09 20 20 20 20 7d | 0d 09 7d 0d 09 6e 2a 20 |].. }|..}..n* |
|00005ff0| 7b 20 23 20 68 69 73 74 | 6f 72 79 20 6e 65 78 74 |{ # hist|ory next|
|00006000| 69 64 0d 0d 09 20 20 20 | 20 69 66 20 7b 24 6c 65 |id... | if {$le|
|00006010| 6e 20 3e 20 31 7d 20 7b | 0d 09 09 72 65 74 75 72 |n > 1} {|...retur|
|00006020| 6e 20 2d 63 6f 64 65 20 | 65 72 72 6f 72 20 22 77 |n -code |error "w|
|00006030| 72 6f 6e 67 20 23 20 61 | 72 67 73 3a 20 73 68 6f |rong # a|rgs: sho|
|00006040| 75 6c 64 20 62 65 20 5c | 22 68 69 73 74 6f 72 79 |uld be \|"history|
|00006050| 20 6e 65 78 74 69 64 5c | 22 22 0d 09 20 20 20 20 | nextid\|"".. |
|00006060| 7d 0d 09 20 20 20 20 69 | 66 20 7b 21 5b 73 74 72 |}.. i|f {![str|
|00006070| 69 6e 67 20 6d 61 74 63 | 68 20 24 6b 65 79 2a 20 |ing matc|h $key* |
|00006080| 6e 65 78 74 69 64 5d 7d | 20 7b 0d 09 09 72 65 74 |nextid]}| {...ret|
|00006090| 75 72 6e 20 2d 63 6f 64 | 65 20 65 72 72 6f 72 20 |urn -cod|e error |
|000060a0| 22 62 61 64 20 6f 70 74 | 69 6f 6e 20 5c 22 24 6b |"bad opt|ion \"$k|
|000060b0| 65 79 5c 22 3a 20 6d 75 | 73 74 20 62 65 20 24 6f |ey\": mu|st be $o|
|000060c0| 70 74 69 6f 6e 73 22 0d | 09 20 20 20 20 7d 0d 09 |ptions".|. }..|
|000060d0| 20 20 20 20 72 65 74 75 | 72 6e 20 5b 65 78 70 72 | retu|rn [expr|
|000060e0| 20 24 74 63 6c 3a 3a 68 | 69 73 74 6f 72 79 28 6e | $tcl::h|istory(n|
|000060f0| 65 78 74 69 64 29 20 2b | 20 31 5d 0d 09 7d 0d 09 |extid) +| 1]..}..|
|00006100| 72 2a 20 7b 20 23 20 68 | 69 73 74 6f 72 79 20 72 |r* { # h|istory r|
|00006110| 65 64 6f 0d 0d 09 20 20 | 20 20 69 66 20 7b 24 6c |edo... | if {$l|
|00006120| 65 6e 20 3e 20 32 7d 20 | 7b 0d 09 09 72 65 74 75 |en > 2} |{...retu|
|00006130| 72 6e 20 2d 63 6f 64 65 | 20 65 72 72 6f 72 20 22 |rn -code| error "|
|00006140| 77 72 6f 6e 67 20 23 20 | 61 72 67 73 3a 20 73 68 |wrong # |args: sh|
|00006150| 6f 75 6c 64 20 62 65 20 | 5c 22 68 69 73 74 6f 72 |ould be |\"histor|
|00006160| 79 20 72 65 64 6f 20 3f | 65 76 65 6e 74 3f 5c 22 |y redo ?|event?\"|
|00006170| 22 0d 09 20 20 20 20 7d | 0d 09 20 20 20 20 69 66 |".. }|.. if|
|00006180| 20 7b 21 5b 73 74 72 69 | 6e 67 20 6d 61 74 63 68 | {![stri|ng match|
|00006190| 20 24 6b 65 79 2a 20 72 | 65 64 6f 5d 7d 20 7b 0d | $key* r|edo]} {.|
|000061a0| 09 09 72 65 74 75 72 6e | 20 2d 63 6f 64 65 20 65 |..return| -code e|
|000061b0| 72 72 6f 72 20 22 62 61 | 64 20 6f 70 74 69 6f 6e |rror "ba|d option|
|000061c0| 20 5c 22 24 6b 65 79 5c | 22 3a 20 6d 75 73 74 20 | \"$key\|": must |
|000061d0| 62 65 20 24 6f 70 74 69 | 6f 6e 73 22 0d 09 20 20 |be $opti|ons".. |
|000061e0| 20 20 7d 0d 09 20 20 20 | 20 72 65 74 75 72 6e 20 | }.. | return |
|000061f0| 5b 74 63 6c 3a 3a 48 69 | 73 74 52 65 64 6f 20 5b |[tcl::Hi|stRedo [|
|00006200| 6c 69 6e 64 65 78 20 24 | 61 72 67 73 20 31 5d 5d |lindex $|args 1]]|
|00006210| 0d 09 7d 0d 09 64 65 66 | 61 75 6c 74 20 7b 0d 09 |..}..def|ault {..|
|00006220| 20 20 20 20 72 65 74 75 | 72 6e 20 2d 63 6f 64 65 | retu|rn -code|
|00006230| 20 65 72 72 6f 72 20 22 | 62 61 64 20 6f 70 74 69 | error "|bad opti|
|00006240| 6f 6e 20 5c 22 24 6b 65 | 79 5c 22 3a 20 6d 75 73 |on \"$ke|y\": mus|
|00006250| 74 20 62 65 20 24 6f 70 | 74 69 6f 6e 73 22 0d 09 |t be $op|tions"..|
|00006260| 7d 0d 20 20 20 20 7d 0d | 7d 0d 0d 23 20 74 63 6c |}. }.|}..# tcl|
|00006270| 3a 3a 48 69 73 74 41 64 | 64 20 2d 2d 0d 23 0d 23 |::HistAd|d --.#.#|
|00006280| 09 41 64 64 20 61 6e 20 | 69 74 65 6d 20 74 6f 20 |.Add an |item to |
|00006290| 74 68 65 20 68 69 73 74 | 6f 72 79 2c 20 61 6e 64 |the hist|ory, and|
|000062a0| 20 6f 70 74 69 6f 6e 61 | 6c 6c 79 20 65 76 61 6c | optiona|lly eval|
|000062b0| 20 69 74 20 61 74 20 74 | 68 65 20 67 6c 6f 62 61 | it at t|he globa|
|000062c0| 6c 20 73 63 6f 70 65 0d | 23 0d 23 20 50 61 72 61 |l scope.|#.# Para|
|000062d0| 6d 65 74 65 72 73 3a 0d | 23 09 63 6f 6d 6d 61 6e |meters:.|#.comman|
|000062e0| 64 09 09 74 68 65 20 63 | 6f 6d 6d 61 6e 64 20 74 |d..the c|ommand t|
|000062f0| 6f 20 61 64 64 0d 23 09 | 65 78 65 63 09 09 28 6f |o add.#.|exec..(o|
|00006300| 70 74 69 6f 6e 61 6c 29 | 20 61 20 73 75 62 73 74 |ptional)| a subst|
|00006310| 72 69 6e 67 20 6f 66 20 | 22 65 78 65 63 22 20 63 |ring of |"exec" c|
|00006320| 61 75 73 65 73 20 74 68 | 65 0d 23 09 09 09 63 6f |auses th|e.#...co|
|00006330| 6d 6d 61 6e 64 20 74 6f | 20 62 65 20 65 76 61 6c |mmand to| be eval|
|00006340| 65 64 2e 0d 23 20 52 65 | 73 75 6c 74 73 3a 0d 23 |ed..# Re|sults:.#|
|00006350| 20 09 49 66 20 65 78 65 | 63 75 74 69 6e 67 2c 20 | .If exe|cuting, |
|00006360| 74 68 65 6e 20 74 68 65 | 20 72 65 73 75 6c 74 73 |then the| results|
|00006370| 20 6f 66 20 74 68 65 20 | 63 6f 6d 6d 61 6e 64 20 | of the |command |
|00006380| 61 72 65 20 72 65 74 75 | 72 6e 65 64 0d 23 0d 23 |are retu|rned.#.#|
|00006390| 20 53 69 64 65 20 45 66 | 66 65 63 74 73 3a 0d 23 | Side Ef|fects:.#|
|000063a0| 09 41 64 64 73 20 74 6f | 20 74 68 65 20 68 69 73 |.Adds to| the his|
|000063b0| 74 6f 72 79 20 6c 69 73 | 74 0d 0d 20 70 72 6f 63 |tory lis|t.. proc|
|000063c0| 20 74 63 6c 3a 3a 48 69 | 73 74 41 64 64 20 7b 63 | tcl::Hi|stAdd {c|
|000063d0| 6f 6d 6d 61 6e 64 20 7b | 65 78 65 63 20 7b 7d 7d |ommand {|exec {}}|
|000063e0| 7d 20 7b 0d 20 20 20 20 | 76 61 72 69 61 62 6c 65 |} {. |variable|
|000063f0| 20 68 69 73 74 6f 72 79 | 0d 20 20 20 20 73 65 74 | history|. set|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.